<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>202069</bug_id>
          
          <creation_ts>2019-09-20 19:21:50 -0700</creation_ts>
          <short_desc>clang-tidy: Fix unnecessary copy/ref churn of for loop variables in WTF/JavaScriptCore</short_desc>
          <delta_ts>2019-09-22 20:33:03 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=202090</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=202096</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Kilzer (:ddkilzer)">ddkilzer</reporter>
          <assigned_to name="David Kilzer (:ddkilzer)">ddkilzer</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1573022</commentid>
    <comment_count>0</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2019-09-20 19:21:50 -0700</bug_when>
    <thetext>Running clang-tidy on WTF and JavaScriptCore resulted in these potential performance improvements to prevent object copies or reference churn in for loop variables:

Source/WTF/wtf/AggregateLogger.h:107:19: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
        for (auto logger : m_loggers) {
                  ^
             const  &amp;
--
Source/JavaScriptCore/parser/Parser.h:333:23: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
            for (auto entry : m_lexicalVariables) {
                      ^
                 const  &amp;
--
Source/JavaScriptCore/./inspector/remote/cocoa/RemoteInspectorCocoa.mm:242:15: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
    for (auto targetConnection : m_targetConnectionMap.values())
              ^
         const  &amp;
--
Source/JavaScriptCore/./inspector/remote/cocoa/RemoteInspectorCocoa.mm:350:15: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
    for (auto targetConnection : m_targetConnectionMap.values())
              ^
         const  &amp;
--
Source/JavaScriptCore/./inspector/remote/cocoa/RemoteInspectorCocoa.mm:440:34: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
    for (RetainPtr&lt;NSDictionary&gt; listing : m_targetListingMap.values()) {
                                 ^
         const                  &amp;
--
Source/JavaScriptCore/./bytecode/CodeBlock.cpp:884:19: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
        for (auto setEntry : set) {
                  ^
             const  &amp;
--
Source/JavaScriptCore/./bytecompiler/BytecodeGenerator.cpp:2316:19: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
        for (auto pair : activationValuesToCopyOver) {
                  ^
             const  &amp;
--
Source/JavaScriptCore/./dfg/DFGGraph.cpp:549:19: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
        for (auto pair : m_rootToArguments)
                  ^
             const  &amp;
--
Source/JavaScriptCore/./inspector/agents/InspectorAgent.cpp:123:15: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
    for (auto domainName : extraDomains)
              ^
         const  &amp;
--
Source/JavaScriptCore/./runtime/ProxyObject.cpp:1059:19: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
        for (auto propertyName : trapResult) {
                  ^
             const  &amp;
--
Source/JavaScriptCore/./runtime/ProxyObject.cpp:1070:19: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
        for (auto propertyName : trapResult)
                  ^
             const  &amp;
--
Source/JavaScriptCore/./runtime/SamplingProfiler.cpp:1016:23: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
            for (auto profile : *profilesToReport)
                      ^
                 const  &amp;
--
Source/JavaScriptCore/./runtime/SamplingProfiler.cpp:1069:19: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
        for (auto entry : functionCounts) {
                  ^
             const  &amp;
--
Source/JavaScriptCore/./runtime/SamplingProfiler.cpp:1149:19: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
        for (auto entry : bytecodeCounts) {
                  ^
             const  &amp;
--
Source/JavaScriptCore/./runtime/TypeSet.cpp:500:19: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
        for (auto field : currentShape-&gt;m_fields)
                  ^
             const  &amp;
--
Source/JavaScriptCore/./runtime/TypeSet.cpp:502:19: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
        for (auto field : currentShape-&gt;m_optionalFields)
                  ^
             const  &amp;
--
Source/JavaScriptCore/./runtime/TypeSet.cpp:541:15: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
    for (auto field : a-&gt;m_fields) {
              ^
         const  &amp;
--
Source/JavaScriptCore/./runtime/TypeSet.cpp:548:15: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
    for (auto field : b-&gt;m_fields) {
              ^
         const  &amp;
--
Source/JavaScriptCore/./runtime/TypeSet.cpp:555:15: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
    for (auto field : a-&gt;m_optionalFields)
              ^
         const  &amp;
--
Source/JavaScriptCore/./runtime/TypeSet.cpp:557:15: warning: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy]
    for (auto field : b-&gt;m_optionalFields)
              ^
         const  &amp;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573023</commentid>
    <comment_count>1</comment_count>
      <attachid>379302</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2019-09-20 19:25:49 -0700</bug_when>
    <thetext>Created attachment 379302
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573024</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-20 19:26:01 -0700</bug_when>
    <thetext>&lt;rdar://problem/55580520&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573025</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-20 19:26:01 -0700</bug_when>
    <thetext>&lt;rdar://problem/55580521&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573028</commentid>
    <comment_count>4</comment_count>
      <attachid>379303</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2019-09-20 19:44:53 -0700</bug_when>
    <thetext>Created attachment 379303
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573029</commentid>
    <comment_count>5</comment_count>
      <attachid>379302</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2019-09-20 19:45:24 -0700</bug_when>
    <thetext>Comment on attachment 379302
Patch v1

View in context: https://bugs.webkit.org/attachment.cgi?id=379302&amp;action=review

&gt; Source/JavaScriptCore/runtime/TypeSet.cpp:557
&gt; +    for (cont auto&amp; field : b-&gt;m_optionalFields)

Typo:  cont auto&amp;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573032</commentid>
    <comment_count>6</comment_count>
      <attachid>379303</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-09-20 20:33:35 -0700</bug_when>
    <thetext>Comment on attachment 379303
Patch v2

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573067</commentid>
    <comment_count>7</comment_count>
      <attachid>379303</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-21 04:40:04 -0700</bug_when>
    <thetext>Comment on attachment 379303
Patch v2

Clearing flags on attachment: 379303

Committed r250180: &lt;https://trac.webkit.org/changeset/250180&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573068</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-21 04:40:06 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379302</attachid>
            <date>2019-09-20 19:25:49 -0700</date>
            <delta_ts>2019-09-20 19:44:51 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-202069-20190920192548.patch</filename>
            <type>text/plain</type>
            <size>13481</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5OTUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ZTdjYmNlOTI4YjZjYWNhZmE5ZmRmYmM2NzYzN2I2NjVjZjVjYmE5Li5mOTA3OGU3ZWIzMDIyZmNm
Yzk1MzY3NDdmMDRmNzdhZDJkYzdmY2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNyBAQAorMjAxOS0wOS0yMCAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29t
PgorCisgICAgICAgIGNsYW5nLXRpZHk6IEZpeCB1bm5lY2Vzc2FyeSBjb3B5L3JlZiBjaHVybiBv
ZiBmb3IgbG9vcCB2YXJpYWJsZXMgaW4gV1RGL0phdmFTY3JpcHRDb3JlCisgICAgICAgIDxodHRw
czovL3dlYmtpdC5vcmcvYi8yMDIwNjk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgRml4IHVud2FudGVkIGNvcHlpbmcvcmVmIGNodXJuIG9mIGxvb3Ag
dmFyaWFibGVzIGJ5IG1ha2luZyB0aGVtCisgICAgICAgIGNvbnN0IHJlZmVyZW5jZXMuCisKKyAg
ICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
OnNldENvbnN0YW50SWRlbnRpZmllclNldFJlZ2lzdGVycyk6CisgICAgICAgICogYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OnByZXBhcmVMZXhpY2FsU2NvcGVGb3JOZXh0Rm9yTG9vcEl0ZXJhdGlvbik6CisgICAgICAg
ICogZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6ZHVtcCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHA6CisgICAgICAgIChJ
bnNwZWN0b3I6Okluc3BlY3RvckFnZW50OjphY3RpdmF0ZUV4dHJhRG9tYWlucyk6CisgICAgICAg
ICogaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JDb2NvYS5tbToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzdG9wSW50ZXJuYWwpOgorICAgICAgICAo
SW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnhwY0Nvbm5lY3Rpb25GYWlsZWQpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnB1c2hMaXN0aW5nc05vdyk6CisgICAgICAg
ICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAoSlNDOjpTY29wZTo6Y29tcHV0ZUxleGljYWxs
eUNhcHR1cmVkVmFyaWFibGVzQW5kUHVyZ2VDYW5kaWRhdGVzKToKKyAgICAgICAgKiBydW50aW1l
L1Byb3h5T2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnBlcmZvcm1HZXRP
d25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3Bw
OgorICAgICAgICAoSlNDOjpTYW1wbGluZ1Byb2ZpbGVyOjpyZWdpc3RlckZvclJlcG9ydEF0RXhp
dCk6CisgICAgICAgIChKU0M6OlNhbXBsaW5nUHJvZmlsZXI6OnJlcG9ydFRvcEZ1bmN0aW9ucyk6
CisgICAgICAgIChKU0M6OlNhbXBsaW5nUHJvZmlsZXI6OnJlcG9ydFRvcEJ5dGVjb2Rlcyk6Cisg
ICAgICAgICogcnVudGltZS9UeXBlU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU2hh
cGU6Omluc3BlY3RvclJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU2hh
cGU6Om1lcmdlKToKKwogMjAxOS0wOS0xNiAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxl
LmNvbT4KIAogICAgICAgICBXYXNtIFN0cmVhbWluZ1BhcnNlciBzaG91bGQgdmFsaWRhdGUgdGhh
dCBudW1iZXIgb2YgZnVuY3Rpb25zIG1hdGNoZXMgbnVtYmVyIG9mIGRlY2xhcmF0aW9ucwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRl
eCAxMmYwN2UyYzUwYTlmNTZlNzUyY2IyNmMxNGYyYWMwNDBiYjBmMWMyLi41NjBlYTAyODZiNWJh
YTgxMzc3OWY3MmYyYmY5NGRjN2VhMDhlNjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE5LTA5
LTIwICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgY2xhbmct
dGlkeTogRml4IHVubmVjZXNzYXJ5IGNvcHkvcmVmIGNodXJuIG9mIGZvciBsb29wIHZhcmlhYmxl
cyBpbiBXVEYvSmF2YVNjcmlwdENvcmUKKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIw
MjA2OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBG
aXggdW53YW50ZWQgY29weWluZy9yZWYgY2h1cm4gb2YgbG9vcCB2YXJpYWJsZXMgYnkgbWFraW5n
IHRoZW0KKyAgICAgICAgY29uc3QgcmVmZXJlbmNlcy4KKworICAgICAgICAqIHd0Zi9BZ2dyZWdh
dGVMb2dnZXIuaDoKKyAgICAgICAgKFdURjo6QWdncmVnYXRlTG9nZ2VyOjpsb2cgY29uc3QpOgor
CiAyMDE5LTA5LTE2ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUmVtb3ZlICJnb3BoZXIiIGZyb20gbGlzdCBvZiBzcGVjaWFsIHNjaGVtZXMg
aW4gVVJMUGFyc2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
Y3BwCmluZGV4IDEzODJmNjljYjU4NmU3MGQ0NzE5NjkwZmRjM2M5NTcyYWU5MTQ4ZTIuLjBjZTU5
MTdjNTRjNDYxMGEyMTEyNjExN2I3MTEyZDU3ZTkzMDkyODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC04ODEsNyArODgxLDcgQEAgdm9pZCBD
b2RlQmxvY2s6OnNldENvbnN0YW50SWRlbnRpZmllclNldFJlZ2lzdGVycyhWTSYgdm0sIGNvbnN0
IFZlY3RvcjxDb25zdGFudEkKICAgICAgICAgSlNTZXQqIGpzU2V0ID0gSlNTZXQ6OmNyZWF0ZShl
eGVjLCB2bSwgc2V0U3RydWN0dXJlLCBzZXQuc2l6ZSgpKTsKICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgdm9pZCgpKTsKIAotICAgICAgICBmb3IgKGF1dG8gc2V0RW50cnkgOiBz
ZXQpIHsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBzZXRFbnRyeSA6IHNldCkgewogICAgICAg
ICAgICAgSlNTdHJpbmcqIGpzU3RyaW5nID0ganNPd25lZFN0cmluZyh2bSwgc2V0RW50cnkuZ2V0
KCkpOyAKICAgICAgICAgICAgIGpzU2V0LT5hZGQoZXhlYywganNTdHJpbmcpOwogICAgICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5k
ZXggNjg4MzU0NTYzMGUzZWJlY2ZjNTIwMDRjNTAwZmIyYjcyNGNhNDJjMS4uOTNjOTU1OGRmZjM4
ZmY4ZWE3ZTE4Njk3OWEwZTU1MzIxMGU1ZTE5MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTIzMTMs
NyArMjMxMyw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnByZXBhcmVMZXhpY2FsU2NvcGVG
b3JOZXh0Rm9yTG9vcEl0ZXJhdGlvbihWYXJpYWJsZUVudmlyCiAgICAgbW92ZShzY29wZVJlZ2lz
dGVyKCksIGxvb3BTY29wZSk7CiAKICAgICB7Ci0gICAgICAgIGZvciAoYXV0byBwYWlyIDogYWN0
aXZhdGlvblZhbHVlc1RvQ29weU92ZXIpIHsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBwYWly
IDogYWN0aXZhdGlvblZhbHVlc1RvQ29weU92ZXIpIHsKICAgICAgICAgICAgIGNvbnN0IElkZW50
aWZpZXImIGlkZW50aWZpZXIgPSBwYWlyLnNlY29uZDsKICAgICAgICAgICAgIFN5bWJvbFRhYmxl
RW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZS0+Z2V0KE5vTG9ja2luZ05lY2Vzc2FyeSwgaWRlbnRp
Zmllci5pbXBsKCkpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWVudHJ5LmlzTnVsbCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKaW5kZXggMmI1MzFiMjY4OWM3
MmY4NTY2YTM1N2MyOTZkMzBlNDI5MWMwNjM0Ni4uY2EyODdhZmZmYmRmZmQ3ZjEwZjUxZDYxOWZj
M2VhYmUyNjdlNmMyMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKQEAg
LTU0Niw3ICs1NDYsNyBAQCB2b2lkIEdyYXBoOjpkdW1wKFByaW50U3RyZWFtJiBvdXQsIER1bXBD
b250ZXh0KiBjb250ZXh0KQogICAgICAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgQXJndW1l
bnQgZm9ybWF0cyBmb3IgZW50cnlwb2ludCBpbmRleDogIiwgZW50cnlwb2ludEluZGV4LCAiIDog
IiwgbGlzdER1bXAobV9hcmd1bWVudEZvcm1hdHNbZW50cnlwb2ludEluZGV4XSksICJcbiIpOwog
ICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgZm9yIChhdXRvIHBhaXIgOiBtX3Jvb3RUb0FyZ3Vt
ZW50cykKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogbV9yb290VG9Bcmd1bWVudHMp
CiAgICAgICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBBcmd1bWVudHMgZm9yIGJsb2NrIyIs
IHBhaXIua2V5LT5pbmRleCwgIjogIiwgbGlzdER1bXAocGFpci52YWx1ZSksICJcbiIpOwogICAg
IH0KICAgICBvdXQucHJpbnQoIlxuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAKaW5kZXggMWNhMzgwNGU3
ZWE3OTI0MGFkMjIzZTg4ZjJiYmMzM2Y2ZTlhNTRjNi4uMWM1ZTI5YWU4ZWQ5MTRlZjAyNTkxODI3
YTRmZTkyMmEwZWQ2M2UwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNwcApAQCAtMTIwLDcgKzEyMCw3IEBA
IHZvaWQgSW5zcGVjdG9yQWdlbnQ6OmFjdGl2YXRlRXh0cmFEb21haW5zKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBleHRyYURvbWFpbnMpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gZG9tYWlu
TmFtZXMgPSBKU09OOjpBcnJheU9mPFN0cmluZz46OmNyZWF0ZSgpOwotICAgIGZvciAoYXV0byBk
b21haW5OYW1lIDogZXh0cmFEb21haW5zKQorICAgIGZvciAoY29uc3QgYXV0byYgZG9tYWluTmFt
ZSA6IGV4dHJhRG9tYWlucykKICAgICAgICAgZG9tYWluTmFtZXMtPmFkZEl0ZW0oZG9tYWluTmFt
ZSk7CiAKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+YWN0aXZhdGVFeHRyYURvbWFpbnMoV1RG
TW92ZShkb21haW5OYW1lcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yQ29jb2EubW0gYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JDb2NvYS5t
bQppbmRleCA2NjUyNjZiNmY1YjQ0OWE1MzMyNzBhZjRjNTRhMzM5ZmI1MjBjNTI0Li4yYmI5NmVj
MmExOGYxNzk1NmYxZjAyZDIwZjg0Y2ZkOGRmNWJkZWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JDb2NvYS5t
bQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1v
dGVJbnNwZWN0b3JDb2NvYS5tbQpAQCAtMjM5LDcgKzIzOSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVj
dG9yOjpzdG9wSW50ZXJuYWwoU3RvcFNvdXJjZSBzb3VyY2UpCiAKICAgICBtX3B1c2hTY2hlZHVs
ZWQgPSBmYWxzZTsKIAotICAgIGZvciAoYXV0byB0YXJnZXRDb25uZWN0aW9uIDogbV90YXJnZXRD
b25uZWN0aW9uTWFwLnZhbHVlcygpKQorICAgIGZvciAoY29uc3QgYXV0byYgdGFyZ2V0Q29ubmVj
dGlvbiA6IG1fdGFyZ2V0Q29ubmVjdGlvbk1hcC52YWx1ZXMoKSkKICAgICAgICAgdGFyZ2V0Q29u
bmVjdGlvbi0+Y2xvc2UoKTsKICAgICBtX3RhcmdldENvbm5lY3Rpb25NYXAuY2xlYXIoKTsKIApA
QCAtMzQ3LDcgKzM0Nyw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjp4cGNDb25uZWN0aW9uRmFp
bGVkKFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24qIHJlbGF5Q29uCiAKICAgICBtX3B1c2hT
Y2hlZHVsZWQgPSBmYWxzZTsKIAotICAgIGZvciAoYXV0byB0YXJnZXRDb25uZWN0aW9uIDogbV90
YXJnZXRDb25uZWN0aW9uTWFwLnZhbHVlcygpKQorICAgIGZvciAoY29uc3QgYXV0byYgdGFyZ2V0
Q29ubmVjdGlvbiA6IG1fdGFyZ2V0Q29ubmVjdGlvbk1hcC52YWx1ZXMoKSkKICAgICAgICAgdGFy
Z2V0Q29ubmVjdGlvbi0+Y2xvc2UoKTsKICAgICBtX3RhcmdldENvbm5lY3Rpb25NYXAuY2xlYXIo
KTsKIApAQCAtNDM3LDcgKzQzNyw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpwdXNoTGlzdGlu
Z3NOb3coKQogICAgIG1fcHVzaFNjaGVkdWxlZCA9IGZhbHNlOwogCiAgICAgUmV0YWluUHRyPE5T
TXV0YWJsZURpY3Rpb25hcnk+IGxpc3RpbmdzID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25h
cnkgYWxsb2NdIGluaXRdKTsKLSAgICBmb3IgKFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IGxpc3Rp
bmcgOiBtX3RhcmdldExpc3RpbmdNYXAudmFsdWVzKCkpIHsKKyAgICBmb3IgKGNvbnN0IGF1dG8m
IGxpc3RpbmcgOiBtX3RhcmdldExpc3RpbmdNYXAudmFsdWVzKCkpIHsKICAgICAgICAgTlNTdHJp
bmcgKnRhcmdldElkZW50aWZpZXJTdHJpbmcgPSBbW2xpc3RpbmcuZ2V0KCkgb2JqZWN0Rm9yS2V5
OldJUlRhcmdldElkZW50aWZpZXJLZXldIHN0cmluZ1ZhbHVlXTsKICAgICAgICAgW2xpc3Rpbmdz
IHNldE9iamVjdDpsaXN0aW5nLmdldCgpIGZvcktleTp0YXJnZXRJZGVudGlmaWVyU3RyaW5nXTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCBiZWY3NmVjOGE2
YmUwZDQ4MDdlNzUwZmI2NWJiMGM1YzAzMWY4MzVhLi42YjYwZWY1YWYwZWEyZTQ1MWJiY2I2NzEz
MzZmYzkzNGM3YWUxZDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAg
LTMzMCw3ICszMzAsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgLy8gV2UgY2FuIG5vdyBwdXJnZSB2
YWx1ZXMgZnJvbSB0aGUgY2FwdHVyZWQgY2FuZGlkYXRlcyBiZWNhdXNlIHRoZXkncmUgY2FwdHVy
ZWQgaW4gdGhpcyBzY29wZS4KICAgICAgICAgewotICAgICAgICAgICAgZm9yIChhdXRvIGVudHJ5
IDogbV9sZXhpY2FsVmFyaWFibGVzKSB7CisgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVu
dHJ5IDogbV9sZXhpY2FsVmFyaWFibGVzKSB7CiAgICAgICAgICAgICAgICAgaWYgKGVudHJ5LnZh
bHVlLmlzQ2FwdHVyZWQoKSkKICAgICAgICAgICAgICAgICAgICAgbV9jbG9zZWRWYXJpYWJsZUNh
bmRpZGF0ZXMucmVtb3ZlKGVudHJ5LmtleS5nZXQoKSk7CiAgICAgICAgICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAKaW5kZXggZDA0NWU1ZTM2
MGQ5YmVhMzE5ZWQ2N2U3NmE1MGIyOTdlYzdiM2JjYy4uYjBlNTA0ZjY3MWZkNTIxYmVjYTM5NWQx
NDkxOTkxOTZiYjc0MzUxZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJveHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3h5T2JqZWN0LmNwcApAQCAtMTA1Niw3ICsxMDU2LDcgQEAgdm9pZCBQcm94eU9iamVjdDo6cGVy
Zm9ybUdldE93blByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJh
eSYKIAogICAgIGlmICghZW51bWVyYXRpb25Nb2RlLmluY2x1ZGVEb250RW51bVByb3BlcnRpZXMo
KSkgewogICAgICAgICAvLyBGaWx0ZXJpbmcgRG9udEVudW0gcHJvcGVydGllcyBpcyBvYnNlcnZh
YmxlIGluIHByb3hpZXMgYW5kIG11c3Qgb2NjdXIgZm9sbG93aW5nIHRoZSBpbnZhcmlhbnQgY2hl
Y2tzIGFib3ZlLgotICAgICAgICBmb3IgKGF1dG8gcHJvcGVydHlOYW1lIDogdHJhcFJlc3VsdCkg
eworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHByb3BlcnR5TmFtZSA6IHRyYXBSZXN1bHQpIHsK
ICAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXMsIFByb3BlcnR5U2xvdDo6SW50ZXJu
YWxNZXRob2RUeXBlOjpHZXRPd25Qcm9wZXJ0eSk7CiAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9
IGdldE93blByb3BlcnR5U2xvdENvbW1vbihleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAg
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKQEAgLTEwNjcsNyAr
MTA2Nyw3IEBAIHZvaWQgUHJveHlPYmplY3Q6OnBlcmZvcm1HZXRPd25Qcm9wZXJ0eU5hbWVzKEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmCiAgICAgICAgICAgICBwcm9wZXJ0eU5h
bWVzLmFkZChwcm9wZXJ0eU5hbWUuaW1wbCgpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7Ci0g
ICAgICAgIGZvciAoYXV0byBwcm9wZXJ0eU5hbWUgOiB0cmFwUmVzdWx0KQorICAgICAgICBmb3Ig
KGNvbnN0IGF1dG8mIHByb3BlcnR5TmFtZSA6IHRyYXBSZXN1bHQpCiAgICAgICAgICAgICBwcm9w
ZXJ0eU5hbWVzLmFkZChwcm9wZXJ0eU5hbWUuaW1wbCgpKTsKICAgICB9CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCmluZGV4IDYx
ZmYzZDA3ZjQwMmNjNzVlNDEzNjZkMTdhMmM5YzJjNDg0MTMwMWQuLmU3NWI3YWU3NTAwMWE0ODBk
ZmI0ZTQzZDM5ZjhkNmU4NjZjZjhiZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCkBAIC0xMDEzLDcgKzEwMTMsNyBAQCB2b2lk
IFNhbXBsaW5nUHJvZmlsZXI6OnJlZ2lzdGVyRm9yUmVwb3J0QXRFeGl0KCkKICAgICBpZiAoIXBy
b2ZpbGVzVG9SZXBvcnQpIHsKICAgICAgICAgcHJvZmlsZXNUb1JlcG9ydCA9IG5ldyBIYXNoU2V0
PFJlZlB0cjxTYW1wbGluZ1Byb2ZpbGVyPj4oKTsKICAgICAgICAgYXRleGl0KFtdKCkgewotICAg
ICAgICAgICAgZm9yIChhdXRvIHByb2ZpbGUgOiAqcHJvZmlsZXNUb1JlcG9ydCkKKyAgICAgICAg
ICAgIGZvciAoY29uc3QgYXV0byYgcHJvZmlsZSA6ICpwcm9maWxlc1RvUmVwb3J0KQogICAgICAg
ICAgICAgICAgIHByb2ZpbGUtPnJlcG9ydERhdGFUb09wdGlvbkZpbGUoKTsKICAgICAgICAgfSk7
CiAgICAgfQpAQCAtMTA2Niw3ICsxMDY2LDcgQEAgdm9pZCBTYW1wbGluZ1Byb2ZpbGVyOjpyZXBv
cnRUb3BGdW5jdGlvbnMoUHJpbnRTdHJlYW0mIG91dCkKICAgICBhdXRvIHRha2VNYXggPSBbJl0g
KCkgLT4gc3RkOjpwYWlyPFN0cmluZywgc2l6ZV90PiB7CiAgICAgICAgIFN0cmluZyBtYXhGcmFt
ZURlc2NyaXB0aW9uOwogICAgICAgICBzaXplX3QgbWF4RnJhbWVDb3VudCA9IDA7Ci0gICAgICAg
IGZvciAoYXV0byBlbnRyeSA6IGZ1bmN0aW9uQ291bnRzKSB7CisgICAgICAgIGZvciAoY29uc3Qg
YXV0byYgZW50cnkgOiBmdW5jdGlvbkNvdW50cykgewogICAgICAgICAgICAgaWYgKGVudHJ5LnZh
bHVlID4gbWF4RnJhbWVDb3VudCkgewogICAgICAgICAgICAgICAgIG1heEZyYW1lQ291bnQgPSBl
bnRyeS52YWx1ZTsKICAgICAgICAgICAgICAgICBtYXhGcmFtZURlc2NyaXB0aW9uID0gZW50cnku
a2V5OwpAQCAtMTE0Niw3ICsxMTQ2LDcgQEAgdm9pZCBTYW1wbGluZ1Byb2ZpbGVyOjpyZXBvcnRU
b3BCeXRlY29kZXMoUHJpbnRTdHJlYW0mIG91dCkKICAgICBhdXRvIHRha2VNYXggPSBbJl0gKCkg
LT4gc3RkOjpwYWlyPFN0cmluZywgc2l6ZV90PiB7CiAgICAgICAgIFN0cmluZyBtYXhGcmFtZURl
c2NyaXB0aW9uOwogICAgICAgICBzaXplX3QgbWF4RnJhbWVDb3VudCA9IDA7Ci0gICAgICAgIGZv
ciAoYXV0byBlbnRyeSA6IGJ5dGVjb2RlQ291bnRzKSB7CisgICAgICAgIGZvciAoY29uc3QgYXV0
byYgZW50cnkgOiBieXRlY29kZUNvdW50cykgewogICAgICAgICAgICAgaWYgKGVudHJ5LnZhbHVl
ID4gbWF4RnJhbWVDb3VudCkgewogICAgICAgICAgICAgICAgIG1heEZyYW1lQ291bnQgPSBlbnRy
eS52YWx1ZTsKICAgICAgICAgICAgICAgICBtYXhGcmFtZURlc2NyaXB0aW9uID0gZW50cnkua2V5
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmNwcAppbmRleCBiOWQwZmZk
ZGEwYmZmMGVlNzc0NTM5NmY5ZjdhNzBiZjYyMjhmODA3Li42ZGFkYjcwZmM2NWE4ZjY0YjZhNDdl
ZDRhNGE1OWZiMGY4MmFjOWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UeXBlU2V0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBl
U2V0LmNwcApAQCAtNDk3LDkgKzQ5Nyw5IEBAIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50
aW1lOjpTdHJ1Y3R1cmVEZXNjcmlwdGlvbj4gU3RydWN0dXJlU2hhcGU6Omluc3BlY3RvCiAgICAg
d2hpbGUgKGN1cnJlbnRTaGFwZSkgewogICAgICAgICBhdXRvIGZpZWxkcyA9IEpTT046OkFycmF5
T2Y8U3RyaW5nPjo6Y3JlYXRlKCk7CiAgICAgICAgIGF1dG8gb3B0aW9uYWxGaWVsZHMgPSBKU09O
OjpBcnJheU9mPFN0cmluZz46OmNyZWF0ZSgpOwotICAgICAgICBmb3IgKGF1dG8gZmllbGQgOiBj
dXJyZW50U2hhcGUtPm1fZmllbGRzKQorICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGZpZWxkIDog
Y3VycmVudFNoYXBlLT5tX2ZpZWxkcykKICAgICAgICAgICAgIGZpZWxkcy0+YWRkSXRlbShmaWVs
ZC5nZXQoKSk7Ci0gICAgICAgIGZvciAoYXV0byBmaWVsZCA6IGN1cnJlbnRTaGFwZS0+bV9vcHRp
b25hbEZpZWxkcykKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBmaWVsZCA6IGN1cnJlbnRTaGFw
ZS0+bV9vcHRpb25hbEZpZWxkcykKICAgICAgICAgICAgIG9wdGlvbmFsRmllbGRzLT5hZGRJdGVt
KGZpZWxkLmdldCgpKTsKIAogICAgICAgICBjdXJyZW50T2JqZWN0LT5zZXRGaWVsZHMoJmZpZWxk
cy5nZXQoKSk7CkBAIC01MzgsMjMgKzUzOCwyMyBAQCBSZWY8U3RydWN0dXJlU2hhcGU+IFN0cnVj
dHVyZVNoYXBlOjptZXJnZShSZWY8U3RydWN0dXJlU2hhcGU+JiYgYSwgUmVmPFN0cnVjdHVyZQog
ICAgIEFTU0VSVChhLT5oYXNTYW1lUHJvdG90eXBlQ2hhaW4oYi5nZXQoKSkpOwogCiAgICAgYXV0
byBtZXJnZWQgPSBTdHJ1Y3R1cmVTaGFwZTo6Y3JlYXRlKCk7Ci0gICAgZm9yIChhdXRvIGZpZWxk
IDogYS0+bV9maWVsZHMpIHsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGZpZWxkIDogYS0+bV9maWVs
ZHMpIHsKICAgICAgICAgaWYgKGItPm1fZmllbGRzLmNvbnRhaW5zKGZpZWxkKSkKICAgICAgICAg
ICAgIG1lcmdlZC0+bV9maWVsZHMuYWRkKGZpZWxkKTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgbWVyZ2VkLT5tX29wdGlvbmFsRmllbGRzLmFkZChmaWVsZCk7CiAgICAgfQogCi0gICAgZm9y
IChhdXRvIGZpZWxkIDogYi0+bV9maWVsZHMpIHsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGZpZWxk
IDogYi0+bV9maWVsZHMpIHsKICAgICAgICAgaWYgKCFtZXJnZWQtPm1fZmllbGRzLmNvbnRhaW5z
KGZpZWxkKSkgewogICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtZXJnZWQtPm1fb3B0aW9u
YWxGaWVsZHMuYWRkKGZpZWxkKTsKICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0
LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBmb3IgKGF1
dG8gZmllbGQgOiBhLT5tX29wdGlvbmFsRmllbGRzKQorICAgIGZvciAoY29uc3QgYXV0byYgZmll
bGQgOiBhLT5tX29wdGlvbmFsRmllbGRzKQogICAgICAgICBtZXJnZWQtPm1fb3B0aW9uYWxGaWVs
ZHMuYWRkKGZpZWxkKTsKLSAgICBmb3IgKGF1dG8gZmllbGQgOiBiLT5tX29wdGlvbmFsRmllbGRz
KQorICAgIGZvciAoY29udCBhdXRvJiBmaWVsZCA6IGItPm1fb3B0aW9uYWxGaWVsZHMpCiAgICAg
ICAgIG1lcmdlZC0+bV9vcHRpb25hbEZpZWxkcy5hZGQoZmllbGQpOwogCiAgICAgQVNTRVJUKGEt
Pm1fY29uc3RydWN0b3JOYW1lID09IGItPm1fY29uc3RydWN0b3JOYW1lKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL0FnZ3JlZ2F0ZUxvZ2dlci5oIGIvU291cmNlL1dURi93dGYvQWdncmVn
YXRlTG9nZ2VyLmgKaW5kZXggZGQ3YTE5OTNhOWJhNTdlYWYxNTI0ZDRlZWNlOWMzY2Y5NmEzNmIy
MC4uYTA0NzUyYWMyYWExNDBkNjcyYWZjOThjMmNkMWE3NGViMGIzODVhZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvQWdncmVnYXRlTG9nZ2VyLmgKKysrIGIvU291cmNlL1dURi93dGYvQWdn
cmVnYXRlTG9nZ2VyLmgKQEAgLTEwNCw3ICsxMDQsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIExv
Z2dlcjo6bG9nKGNoYW5uZWwsIGxldmVsLCBhcmd1bWVudHMuLi4pOwogCi0gICAgICAgIGZvciAo
YXV0byBsb2dnZXIgOiBtX2xvZ2dlcnMpIHsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBsb2dn
ZXIgOiBtX2xvZ2dlcnMpIHsKICAgICAgICAgICAgIGZvciAoT2JzZXJ2ZXImIG9ic2VydmVyIDog
bG9nZ2VyLT5vYnNlcnZlcnMoKSkKICAgICAgICAgICAgICAgICBvYnNlcnZlci5kaWRMb2dNZXNz
YWdlKGNoYW5uZWwsIGxldmVsLCB7IENvbnNvbGVMb2dWYWx1ZTxBcmd1bWVudD46OnRvVmFsdWUo
YXJndW1lbnRzKS4uLiB9KTsKICAgICAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379303</attachid>
            <date>2019-09-20 19:44:53 -0700</date>
            <delta_ts>2019-09-21 04:40:04 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-202069-20190920194452.patch</filename>
            <type>text/plain</type>
            <size>13482</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5OTUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ZTdjYmNlOTI4YjZjYWNhZmE5ZmRmYmM2NzYzN2I2NjVjZjVjYmE5Li5mOTA3OGU3ZWIzMDIyZmNm
Yzk1MzY3NDdmMDRmNzdhZDJkYzdmY2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNyBAQAorMjAxOS0wOS0yMCAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29t
PgorCisgICAgICAgIGNsYW5nLXRpZHk6IEZpeCB1bm5lY2Vzc2FyeSBjb3B5L3JlZiBjaHVybiBv
ZiBmb3IgbG9vcCB2YXJpYWJsZXMgaW4gV1RGL0phdmFTY3JpcHRDb3JlCisgICAgICAgIDxodHRw
czovL3dlYmtpdC5vcmcvYi8yMDIwNjk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgRml4IHVud2FudGVkIGNvcHlpbmcvcmVmIGNodXJuIG9mIGxvb3Ag
dmFyaWFibGVzIGJ5IG1ha2luZyB0aGVtCisgICAgICAgIGNvbnN0IHJlZmVyZW5jZXMuCisKKyAg
ICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
OnNldENvbnN0YW50SWRlbnRpZmllclNldFJlZ2lzdGVycyk6CisgICAgICAgICogYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OnByZXBhcmVMZXhpY2FsU2NvcGVGb3JOZXh0Rm9yTG9vcEl0ZXJhdGlvbik6CisgICAgICAg
ICogZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6ZHVtcCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHA6CisgICAgICAgIChJ
bnNwZWN0b3I6Okluc3BlY3RvckFnZW50OjphY3RpdmF0ZUV4dHJhRG9tYWlucyk6CisgICAgICAg
ICogaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JDb2NvYS5tbToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzdG9wSW50ZXJuYWwpOgorICAgICAgICAo
SW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnhwY0Nvbm5lY3Rpb25GYWlsZWQpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnB1c2hMaXN0aW5nc05vdyk6CisgICAgICAg
ICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAoSlNDOjpTY29wZTo6Y29tcHV0ZUxleGljYWxs
eUNhcHR1cmVkVmFyaWFibGVzQW5kUHVyZ2VDYW5kaWRhdGVzKToKKyAgICAgICAgKiBydW50aW1l
L1Byb3h5T2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnBlcmZvcm1HZXRP
d25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3Bw
OgorICAgICAgICAoSlNDOjpTYW1wbGluZ1Byb2ZpbGVyOjpyZWdpc3RlckZvclJlcG9ydEF0RXhp
dCk6CisgICAgICAgIChKU0M6OlNhbXBsaW5nUHJvZmlsZXI6OnJlcG9ydFRvcEZ1bmN0aW9ucyk6
CisgICAgICAgIChKU0M6OlNhbXBsaW5nUHJvZmlsZXI6OnJlcG9ydFRvcEJ5dGVjb2Rlcyk6Cisg
ICAgICAgICogcnVudGltZS9UeXBlU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU2hh
cGU6Omluc3BlY3RvclJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU2hh
cGU6Om1lcmdlKToKKwogMjAxOS0wOS0xNiAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxl
LmNvbT4KIAogICAgICAgICBXYXNtIFN0cmVhbWluZ1BhcnNlciBzaG91bGQgdmFsaWRhdGUgdGhh
dCBudW1iZXIgb2YgZnVuY3Rpb25zIG1hdGNoZXMgbnVtYmVyIG9mIGRlY2xhcmF0aW9ucwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRl
eCAxMmYwN2UyYzUwYTlmNTZlNzUyY2IyNmMxNGYyYWMwNDBiYjBmMWMyLi41NjBlYTAyODZiNWJh
YTgxMzc3OWY3MmYyYmY5NGRjN2VhMDhlNjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE5LTA5
LTIwICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgY2xhbmct
dGlkeTogRml4IHVubmVjZXNzYXJ5IGNvcHkvcmVmIGNodXJuIG9mIGZvciBsb29wIHZhcmlhYmxl
cyBpbiBXVEYvSmF2YVNjcmlwdENvcmUKKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIw
MjA2OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBG
aXggdW53YW50ZWQgY29weWluZy9yZWYgY2h1cm4gb2YgbG9vcCB2YXJpYWJsZXMgYnkgbWFraW5n
IHRoZW0KKyAgICAgICAgY29uc3QgcmVmZXJlbmNlcy4KKworICAgICAgICAqIHd0Zi9BZ2dyZWdh
dGVMb2dnZXIuaDoKKyAgICAgICAgKFdURjo6QWdncmVnYXRlTG9nZ2VyOjpsb2cgY29uc3QpOgor
CiAyMDE5LTA5LTE2ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUmVtb3ZlICJnb3BoZXIiIGZyb20gbGlzdCBvZiBzcGVjaWFsIHNjaGVtZXMg
aW4gVVJMUGFyc2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
Y3BwCmluZGV4IDEzODJmNjljYjU4NmU3MGQ0NzE5NjkwZmRjM2M5NTcyYWU5MTQ4ZTIuLjBjZTU5
MTdjNTRjNDYxMGEyMTEyNjExN2I3MTEyZDU3ZTkzMDkyODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC04ODEsNyArODgxLDcgQEAgdm9pZCBD
b2RlQmxvY2s6OnNldENvbnN0YW50SWRlbnRpZmllclNldFJlZ2lzdGVycyhWTSYgdm0sIGNvbnN0
IFZlY3RvcjxDb25zdGFudEkKICAgICAgICAgSlNTZXQqIGpzU2V0ID0gSlNTZXQ6OmNyZWF0ZShl
eGVjLCB2bSwgc2V0U3RydWN0dXJlLCBzZXQuc2l6ZSgpKTsKICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgdm9pZCgpKTsKIAotICAgICAgICBmb3IgKGF1dG8gc2V0RW50cnkgOiBz
ZXQpIHsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBzZXRFbnRyeSA6IHNldCkgewogICAgICAg
ICAgICAgSlNTdHJpbmcqIGpzU3RyaW5nID0ganNPd25lZFN0cmluZyh2bSwgc2V0RW50cnkuZ2V0
KCkpOyAKICAgICAgICAgICAgIGpzU2V0LT5hZGQoZXhlYywganNTdHJpbmcpOwogICAgICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5k
ZXggNjg4MzU0NTYzMGUzZWJlY2ZjNTIwMDRjNTAwZmIyYjcyNGNhNDJjMS4uOTNjOTU1OGRmZjM4
ZmY4ZWE3ZTE4Njk3OWEwZTU1MzIxMGU1ZTE5MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTIzMTMs
NyArMjMxMyw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnByZXBhcmVMZXhpY2FsU2NvcGVG
b3JOZXh0Rm9yTG9vcEl0ZXJhdGlvbihWYXJpYWJsZUVudmlyCiAgICAgbW92ZShzY29wZVJlZ2lz
dGVyKCksIGxvb3BTY29wZSk7CiAKICAgICB7Ci0gICAgICAgIGZvciAoYXV0byBwYWlyIDogYWN0
aXZhdGlvblZhbHVlc1RvQ29weU92ZXIpIHsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBwYWly
IDogYWN0aXZhdGlvblZhbHVlc1RvQ29weU92ZXIpIHsKICAgICAgICAgICAgIGNvbnN0IElkZW50
aWZpZXImIGlkZW50aWZpZXIgPSBwYWlyLnNlY29uZDsKICAgICAgICAgICAgIFN5bWJvbFRhYmxl
RW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZS0+Z2V0KE5vTG9ja2luZ05lY2Vzc2FyeSwgaWRlbnRp
Zmllci5pbXBsKCkpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWVudHJ5LmlzTnVsbCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKaW5kZXggMmI1MzFiMjY4OWM3
MmY4NTY2YTM1N2MyOTZkMzBlNDI5MWMwNjM0Ni4uY2EyODdhZmZmYmRmZmQ3ZjEwZjUxZDYxOWZj
M2VhYmUyNjdlNmMyMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKQEAg
LTU0Niw3ICs1NDYsNyBAQCB2b2lkIEdyYXBoOjpkdW1wKFByaW50U3RyZWFtJiBvdXQsIER1bXBD
b250ZXh0KiBjb250ZXh0KQogICAgICAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgQXJndW1l
bnQgZm9ybWF0cyBmb3IgZW50cnlwb2ludCBpbmRleDogIiwgZW50cnlwb2ludEluZGV4LCAiIDog
IiwgbGlzdER1bXAobV9hcmd1bWVudEZvcm1hdHNbZW50cnlwb2ludEluZGV4XSksICJcbiIpOwog
ICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgZm9yIChhdXRvIHBhaXIgOiBtX3Jvb3RUb0FyZ3Vt
ZW50cykKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogbV9yb290VG9Bcmd1bWVudHMp
CiAgICAgICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBBcmd1bWVudHMgZm9yIGJsb2NrIyIs
IHBhaXIua2V5LT5pbmRleCwgIjogIiwgbGlzdER1bXAocGFpci52YWx1ZSksICJcbiIpOwogICAg
IH0KICAgICBvdXQucHJpbnQoIlxuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAKaW5kZXggMWNhMzgwNGU3
ZWE3OTI0MGFkMjIzZTg4ZjJiYmMzM2Y2ZTlhNTRjNi4uMWM1ZTI5YWU4ZWQ5MTRlZjAyNTkxODI3
YTRmZTkyMmEwZWQ2M2UwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNwcApAQCAtMTIwLDcgKzEyMCw3IEBA
IHZvaWQgSW5zcGVjdG9yQWdlbnQ6OmFjdGl2YXRlRXh0cmFEb21haW5zKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBleHRyYURvbWFpbnMpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gZG9tYWlu
TmFtZXMgPSBKU09OOjpBcnJheU9mPFN0cmluZz46OmNyZWF0ZSgpOwotICAgIGZvciAoYXV0byBk
b21haW5OYW1lIDogZXh0cmFEb21haW5zKQorICAgIGZvciAoY29uc3QgYXV0byYgZG9tYWluTmFt
ZSA6IGV4dHJhRG9tYWlucykKICAgICAgICAgZG9tYWluTmFtZXMtPmFkZEl0ZW0oZG9tYWluTmFt
ZSk7CiAKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+YWN0aXZhdGVFeHRyYURvbWFpbnMoV1RG
TW92ZShkb21haW5OYW1lcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yQ29jb2EubW0gYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JDb2NvYS5t
bQppbmRleCA2NjUyNjZiNmY1YjQ0OWE1MzMyNzBhZjRjNTRhMzM5ZmI1MjBjNTI0Li4yYmI5NmVj
MmExOGYxNzk1NmYxZjAyZDIwZjg0Y2ZkOGRmNWJkZWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JDb2NvYS5t
bQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1v
dGVJbnNwZWN0b3JDb2NvYS5tbQpAQCAtMjM5LDcgKzIzOSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVj
dG9yOjpzdG9wSW50ZXJuYWwoU3RvcFNvdXJjZSBzb3VyY2UpCiAKICAgICBtX3B1c2hTY2hlZHVs
ZWQgPSBmYWxzZTsKIAotICAgIGZvciAoYXV0byB0YXJnZXRDb25uZWN0aW9uIDogbV90YXJnZXRD
b25uZWN0aW9uTWFwLnZhbHVlcygpKQorICAgIGZvciAoY29uc3QgYXV0byYgdGFyZ2V0Q29ubmVj
dGlvbiA6IG1fdGFyZ2V0Q29ubmVjdGlvbk1hcC52YWx1ZXMoKSkKICAgICAgICAgdGFyZ2V0Q29u
bmVjdGlvbi0+Y2xvc2UoKTsKICAgICBtX3RhcmdldENvbm5lY3Rpb25NYXAuY2xlYXIoKTsKIApA
QCAtMzQ3LDcgKzM0Nyw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjp4cGNDb25uZWN0aW9uRmFp
bGVkKFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24qIHJlbGF5Q29uCiAKICAgICBtX3B1c2hT
Y2hlZHVsZWQgPSBmYWxzZTsKIAotICAgIGZvciAoYXV0byB0YXJnZXRDb25uZWN0aW9uIDogbV90
YXJnZXRDb25uZWN0aW9uTWFwLnZhbHVlcygpKQorICAgIGZvciAoY29uc3QgYXV0byYgdGFyZ2V0
Q29ubmVjdGlvbiA6IG1fdGFyZ2V0Q29ubmVjdGlvbk1hcC52YWx1ZXMoKSkKICAgICAgICAgdGFy
Z2V0Q29ubmVjdGlvbi0+Y2xvc2UoKTsKICAgICBtX3RhcmdldENvbm5lY3Rpb25NYXAuY2xlYXIo
KTsKIApAQCAtNDM3LDcgKzQzNyw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpwdXNoTGlzdGlu
Z3NOb3coKQogICAgIG1fcHVzaFNjaGVkdWxlZCA9IGZhbHNlOwogCiAgICAgUmV0YWluUHRyPE5T
TXV0YWJsZURpY3Rpb25hcnk+IGxpc3RpbmdzID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25h
cnkgYWxsb2NdIGluaXRdKTsKLSAgICBmb3IgKFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IGxpc3Rp
bmcgOiBtX3RhcmdldExpc3RpbmdNYXAudmFsdWVzKCkpIHsKKyAgICBmb3IgKGNvbnN0IGF1dG8m
IGxpc3RpbmcgOiBtX3RhcmdldExpc3RpbmdNYXAudmFsdWVzKCkpIHsKICAgICAgICAgTlNTdHJp
bmcgKnRhcmdldElkZW50aWZpZXJTdHJpbmcgPSBbW2xpc3RpbmcuZ2V0KCkgb2JqZWN0Rm9yS2V5
OldJUlRhcmdldElkZW50aWZpZXJLZXldIHN0cmluZ1ZhbHVlXTsKICAgICAgICAgW2xpc3Rpbmdz
IHNldE9iamVjdDpsaXN0aW5nLmdldCgpIGZvcktleTp0YXJnZXRJZGVudGlmaWVyU3RyaW5nXTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCBiZWY3NmVjOGE2
YmUwZDQ4MDdlNzUwZmI2NWJiMGM1YzAzMWY4MzVhLi42YjYwZWY1YWYwZWEyZTQ1MWJiY2I2NzEz
MzZmYzkzNGM3YWUxZDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAg
LTMzMCw3ICszMzAsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgLy8gV2UgY2FuIG5vdyBwdXJnZSB2
YWx1ZXMgZnJvbSB0aGUgY2FwdHVyZWQgY2FuZGlkYXRlcyBiZWNhdXNlIHRoZXkncmUgY2FwdHVy
ZWQgaW4gdGhpcyBzY29wZS4KICAgICAgICAgewotICAgICAgICAgICAgZm9yIChhdXRvIGVudHJ5
IDogbV9sZXhpY2FsVmFyaWFibGVzKSB7CisgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVu
dHJ5IDogbV9sZXhpY2FsVmFyaWFibGVzKSB7CiAgICAgICAgICAgICAgICAgaWYgKGVudHJ5LnZh
bHVlLmlzQ2FwdHVyZWQoKSkKICAgICAgICAgICAgICAgICAgICAgbV9jbG9zZWRWYXJpYWJsZUNh
bmRpZGF0ZXMucmVtb3ZlKGVudHJ5LmtleS5nZXQoKSk7CiAgICAgICAgICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAKaW5kZXggZDA0NWU1ZTM2
MGQ5YmVhMzE5ZWQ2N2U3NmE1MGIyOTdlYzdiM2JjYy4uYjBlNTA0ZjY3MWZkNTIxYmVjYTM5NWQx
NDkxOTkxOTZiYjc0MzUxZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJveHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3h5T2JqZWN0LmNwcApAQCAtMTA1Niw3ICsxMDU2LDcgQEAgdm9pZCBQcm94eU9iamVjdDo6cGVy
Zm9ybUdldE93blByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJh
eSYKIAogICAgIGlmICghZW51bWVyYXRpb25Nb2RlLmluY2x1ZGVEb250RW51bVByb3BlcnRpZXMo
KSkgewogICAgICAgICAvLyBGaWx0ZXJpbmcgRG9udEVudW0gcHJvcGVydGllcyBpcyBvYnNlcnZh
YmxlIGluIHByb3hpZXMgYW5kIG11c3Qgb2NjdXIgZm9sbG93aW5nIHRoZSBpbnZhcmlhbnQgY2hl
Y2tzIGFib3ZlLgotICAgICAgICBmb3IgKGF1dG8gcHJvcGVydHlOYW1lIDogdHJhcFJlc3VsdCkg
eworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHByb3BlcnR5TmFtZSA6IHRyYXBSZXN1bHQpIHsK
ICAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXMsIFByb3BlcnR5U2xvdDo6SW50ZXJu
YWxNZXRob2RUeXBlOjpHZXRPd25Qcm9wZXJ0eSk7CiAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9
IGdldE93blByb3BlcnR5U2xvdENvbW1vbihleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAg
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKQEAgLTEwNjcsNyAr
MTA2Nyw3IEBAIHZvaWQgUHJveHlPYmplY3Q6OnBlcmZvcm1HZXRPd25Qcm9wZXJ0eU5hbWVzKEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmCiAgICAgICAgICAgICBwcm9wZXJ0eU5h
bWVzLmFkZChwcm9wZXJ0eU5hbWUuaW1wbCgpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7Ci0g
ICAgICAgIGZvciAoYXV0byBwcm9wZXJ0eU5hbWUgOiB0cmFwUmVzdWx0KQorICAgICAgICBmb3Ig
KGNvbnN0IGF1dG8mIHByb3BlcnR5TmFtZSA6IHRyYXBSZXN1bHQpCiAgICAgICAgICAgICBwcm9w
ZXJ0eU5hbWVzLmFkZChwcm9wZXJ0eU5hbWUuaW1wbCgpKTsKICAgICB9CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCmluZGV4IDYx
ZmYzZDA3ZjQwMmNjNzVlNDEzNjZkMTdhMmM5YzJjNDg0MTMwMWQuLmU3NWI3YWU3NTAwMWE0ODBk
ZmI0ZTQzZDM5ZjhkNmU4NjZjZjhiZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCkBAIC0xMDEzLDcgKzEwMTMsNyBAQCB2b2lk
IFNhbXBsaW5nUHJvZmlsZXI6OnJlZ2lzdGVyRm9yUmVwb3J0QXRFeGl0KCkKICAgICBpZiAoIXBy
b2ZpbGVzVG9SZXBvcnQpIHsKICAgICAgICAgcHJvZmlsZXNUb1JlcG9ydCA9IG5ldyBIYXNoU2V0
PFJlZlB0cjxTYW1wbGluZ1Byb2ZpbGVyPj4oKTsKICAgICAgICAgYXRleGl0KFtdKCkgewotICAg
ICAgICAgICAgZm9yIChhdXRvIHByb2ZpbGUgOiAqcHJvZmlsZXNUb1JlcG9ydCkKKyAgICAgICAg
ICAgIGZvciAoY29uc3QgYXV0byYgcHJvZmlsZSA6ICpwcm9maWxlc1RvUmVwb3J0KQogICAgICAg
ICAgICAgICAgIHByb2ZpbGUtPnJlcG9ydERhdGFUb09wdGlvbkZpbGUoKTsKICAgICAgICAgfSk7
CiAgICAgfQpAQCAtMTA2Niw3ICsxMDY2LDcgQEAgdm9pZCBTYW1wbGluZ1Byb2ZpbGVyOjpyZXBv
cnRUb3BGdW5jdGlvbnMoUHJpbnRTdHJlYW0mIG91dCkKICAgICBhdXRvIHRha2VNYXggPSBbJl0g
KCkgLT4gc3RkOjpwYWlyPFN0cmluZywgc2l6ZV90PiB7CiAgICAgICAgIFN0cmluZyBtYXhGcmFt
ZURlc2NyaXB0aW9uOwogICAgICAgICBzaXplX3QgbWF4RnJhbWVDb3VudCA9IDA7Ci0gICAgICAg
IGZvciAoYXV0byBlbnRyeSA6IGZ1bmN0aW9uQ291bnRzKSB7CisgICAgICAgIGZvciAoY29uc3Qg
YXV0byYgZW50cnkgOiBmdW5jdGlvbkNvdW50cykgewogICAgICAgICAgICAgaWYgKGVudHJ5LnZh
bHVlID4gbWF4RnJhbWVDb3VudCkgewogICAgICAgICAgICAgICAgIG1heEZyYW1lQ291bnQgPSBl
bnRyeS52YWx1ZTsKICAgICAgICAgICAgICAgICBtYXhGcmFtZURlc2NyaXB0aW9uID0gZW50cnku
a2V5OwpAQCAtMTE0Niw3ICsxMTQ2LDcgQEAgdm9pZCBTYW1wbGluZ1Byb2ZpbGVyOjpyZXBvcnRU
b3BCeXRlY29kZXMoUHJpbnRTdHJlYW0mIG91dCkKICAgICBhdXRvIHRha2VNYXggPSBbJl0gKCkg
LT4gc3RkOjpwYWlyPFN0cmluZywgc2l6ZV90PiB7CiAgICAgICAgIFN0cmluZyBtYXhGcmFtZURl
c2NyaXB0aW9uOwogICAgICAgICBzaXplX3QgbWF4RnJhbWVDb3VudCA9IDA7Ci0gICAgICAgIGZv
ciAoYXV0byBlbnRyeSA6IGJ5dGVjb2RlQ291bnRzKSB7CisgICAgICAgIGZvciAoY29uc3QgYXV0
byYgZW50cnkgOiBieXRlY29kZUNvdW50cykgewogICAgICAgICAgICAgaWYgKGVudHJ5LnZhbHVl
ID4gbWF4RnJhbWVDb3VudCkgewogICAgICAgICAgICAgICAgIG1heEZyYW1lQ291bnQgPSBlbnRy
eS52YWx1ZTsKICAgICAgICAgICAgICAgICBtYXhGcmFtZURlc2NyaXB0aW9uID0gZW50cnkua2V5
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmNwcAppbmRleCBiOWQwZmZk
ZGEwYmZmMGVlNzc0NTM5NmY5ZjdhNzBiZjYyMjhmODA3Li45ZGIxZDg4MGE2ZTQwYzJlNmM2ZjUz
NjdkY2E3MzgyNTYxMWEyNjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UeXBlU2V0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBl
U2V0LmNwcApAQCAtNDk3LDkgKzQ5Nyw5IEBAIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50
aW1lOjpTdHJ1Y3R1cmVEZXNjcmlwdGlvbj4gU3RydWN0dXJlU2hhcGU6Omluc3BlY3RvCiAgICAg
d2hpbGUgKGN1cnJlbnRTaGFwZSkgewogICAgICAgICBhdXRvIGZpZWxkcyA9IEpTT046OkFycmF5
T2Y8U3RyaW5nPjo6Y3JlYXRlKCk7CiAgICAgICAgIGF1dG8gb3B0aW9uYWxGaWVsZHMgPSBKU09O
OjpBcnJheU9mPFN0cmluZz46OmNyZWF0ZSgpOwotICAgICAgICBmb3IgKGF1dG8gZmllbGQgOiBj
dXJyZW50U2hhcGUtPm1fZmllbGRzKQorICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGZpZWxkIDog
Y3VycmVudFNoYXBlLT5tX2ZpZWxkcykKICAgICAgICAgICAgIGZpZWxkcy0+YWRkSXRlbShmaWVs
ZC5nZXQoKSk7Ci0gICAgICAgIGZvciAoYXV0byBmaWVsZCA6IGN1cnJlbnRTaGFwZS0+bV9vcHRp
b25hbEZpZWxkcykKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBmaWVsZCA6IGN1cnJlbnRTaGFw
ZS0+bV9vcHRpb25hbEZpZWxkcykKICAgICAgICAgICAgIG9wdGlvbmFsRmllbGRzLT5hZGRJdGVt
KGZpZWxkLmdldCgpKTsKIAogICAgICAgICBjdXJyZW50T2JqZWN0LT5zZXRGaWVsZHMoJmZpZWxk
cy5nZXQoKSk7CkBAIC01MzgsMjMgKzUzOCwyMyBAQCBSZWY8U3RydWN0dXJlU2hhcGU+IFN0cnVj
dHVyZVNoYXBlOjptZXJnZShSZWY8U3RydWN0dXJlU2hhcGU+JiYgYSwgUmVmPFN0cnVjdHVyZQog
ICAgIEFTU0VSVChhLT5oYXNTYW1lUHJvdG90eXBlQ2hhaW4oYi5nZXQoKSkpOwogCiAgICAgYXV0
byBtZXJnZWQgPSBTdHJ1Y3R1cmVTaGFwZTo6Y3JlYXRlKCk7Ci0gICAgZm9yIChhdXRvIGZpZWxk
IDogYS0+bV9maWVsZHMpIHsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGZpZWxkIDogYS0+bV9maWVs
ZHMpIHsKICAgICAgICAgaWYgKGItPm1fZmllbGRzLmNvbnRhaW5zKGZpZWxkKSkKICAgICAgICAg
ICAgIG1lcmdlZC0+bV9maWVsZHMuYWRkKGZpZWxkKTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgbWVyZ2VkLT5tX29wdGlvbmFsRmllbGRzLmFkZChmaWVsZCk7CiAgICAgfQogCi0gICAgZm9y
IChhdXRvIGZpZWxkIDogYi0+bV9maWVsZHMpIHsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGZpZWxk
IDogYi0+bV9maWVsZHMpIHsKICAgICAgICAgaWYgKCFtZXJnZWQtPm1fZmllbGRzLmNvbnRhaW5z
KGZpZWxkKSkgewogICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtZXJnZWQtPm1fb3B0aW9u
YWxGaWVsZHMuYWRkKGZpZWxkKTsKICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0
LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBmb3IgKGF1
dG8gZmllbGQgOiBhLT5tX29wdGlvbmFsRmllbGRzKQorICAgIGZvciAoY29uc3QgYXV0byYgZmll
bGQgOiBhLT5tX29wdGlvbmFsRmllbGRzKQogICAgICAgICBtZXJnZWQtPm1fb3B0aW9uYWxGaWVs
ZHMuYWRkKGZpZWxkKTsKLSAgICBmb3IgKGF1dG8gZmllbGQgOiBiLT5tX29wdGlvbmFsRmllbGRz
KQorICAgIGZvciAoY29uc3QgYXV0byYgZmllbGQgOiBiLT5tX29wdGlvbmFsRmllbGRzKQogICAg
ICAgICBtZXJnZWQtPm1fb3B0aW9uYWxGaWVsZHMuYWRkKGZpZWxkKTsKIAogICAgIEFTU0VSVChh
LT5tX2NvbnN0cnVjdG9yTmFtZSA9PSBiLT5tX2NvbnN0cnVjdG9yTmFtZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9BZ2dyZWdhdGVMb2dnZXIuaCBiL1NvdXJjZS9XVEYvd3RmL0FnZ3Jl
Z2F0ZUxvZ2dlci5oCmluZGV4IGRkN2ExOTkzYTliYTU3ZWFmMTUyNGQ0ZWVjZTljM2NmOTZhMzZi
MjAuLmEwNDc1MmFjMmFhMTQwZDY3MmFmYzk4YzJjZDFhNzRlYjBiMzg1YWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL0FnZ3JlZ2F0ZUxvZ2dlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Fn
Z3JlZ2F0ZUxvZ2dlci5oCkBAIC0xMDQsNyArMTA0LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBM
b2dnZXI6OmxvZyhjaGFubmVsLCBsZXZlbCwgYXJndW1lbnRzLi4uKTsKIAotICAgICAgICBmb3Ig
KGF1dG8gbG9nZ2VyIDogbV9sb2dnZXJzKSB7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgbG9n
Z2VyIDogbV9sb2dnZXJzKSB7CiAgICAgICAgICAgICBmb3IgKE9ic2VydmVyJiBvYnNlcnZlciA6
IGxvZ2dlci0+b2JzZXJ2ZXJzKCkpCiAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIuZGlkTG9nTWVz
c2FnZShjaGFubmVsLCBsZXZlbCwgeyBDb25zb2xlTG9nVmFsdWU8QXJndW1lbnQ+Ojp0b1ZhbHVl
KGFyZ3VtZW50cykuLi4gfSk7CiAgICAgICAgIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>