<?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>82135</bug_id>
          
          <creation_ts>2012-03-24 15:28:03 -0700</creation_ts>
          <short_desc>DFG int-to-double conversion should be revealed to CSE</short_desc>
          <delta_ts>2012-03-25 16:51:22 -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>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>gustavo</cc>
    
    <cc>pnormand</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>587185</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-03-24 15:28:03 -0700</bug_when>
    <thetext>Currently if we have an integer variable, like:

var x = 1;

And we use it in multiple places in a context that requires conversion to double, like:

... = x * 0.5;
... = sqrt(x);

Then we will convert it to double on each of those uses.  That&apos;s wasteful, and we should be able to remember that the conversion had already been performed by separately tracking the converted-to-double version of the value.

We have an even more gross problem if we do the following:

var x = o.f; // o.f predicted int
... = x * 0.5;
... = array[x];

The first statement will format x as a JSValue.  The second statement will speculate that x is a number and convert it to a double in-place. The third statement will then end up doing horrible slow things to try to perform an array access using a double as an index.

Again, if we had a way of separately tracking the converted-to-double form of this integer variable, this would not be a problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587187</commentid>
    <comment_count>1</comment_count>
      <attachid>133653</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-03-24 15:33:49 -0700</bug_when>
    <thetext>Created attachment 133653
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587197</commentid>
    <comment_count>2</comment_count>
      <attachid>133657</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-03-24 15:59:07 -0700</bug_when>
    <thetext>Created attachment 133657
work in progress

I&apos;m almost ready to start testing it...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587222</commentid>
    <comment_count>3</comment_count>
      <attachid>133668</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-03-24 20:02:16 -0700</bug_when>
    <thetext>Created attachment 133668
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587256</commentid>
    <comment_count>4</comment_count>
      <attachid>133673</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-03-25 00:52:09 -0700</bug_when>
    <thetext>Created attachment 133673
the patch

Rebased patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587257</commentid>
    <comment_count>5</comment_count>
      <attachid>133673</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-03-25 00:58:23 -0700</bug_when>
    <thetext>Comment on attachment 133673
the patch

Attachment 133673 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/12129342</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587258</commentid>
    <comment_count>6</comment_count>
      <attachid>133673</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-03-25 01:00:13 -0700</bug_when>
    <thetext>Comment on attachment 133673
the patch

Attachment 133673 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/12134270</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587259</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-03-25 01:02:37 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 133673 [details])
&gt; Attachment 133673 [details] did not pass qt-ews (qt):
&gt; Output: http://queues.webkit.org/results/12134270

Ooops, I need to write the 32-bit version of compileInt32ToDouble. :-(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587358</commentid>
    <comment_count>8</comment_count>
      <attachid>133695</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-03-25 15:35:37 -0700</bug_when>
    <thetext>Created attachment 133695
the patch

Fix 32-bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587359</commentid>
    <comment_count>9</comment_count>
      <attachid>133695</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-03-25 15:51:40 -0700</bug_when>
    <thetext>Comment on attachment 133695
the patch

Attachment 133695 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/12134479</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587360</commentid>
    <comment_count>10</comment_count>
      <attachid>133695</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-03-25 15:52:25 -0700</bug_when>
    <thetext>Comment on attachment 133695
the patch

Attachment 133695 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/12129524</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587361</commentid>
    <comment_count>11</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-03-25 15:53:29 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 133695 [details])
&gt; Attachment 133695 [details] did not pass efl-ews (efl):
&gt; Output: http://queues.webkit.org/results/12134479

Fix on the way ... it appears that in the process of moving #if&apos;s around, I broke 64-bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587362</commentid>
    <comment_count>12</comment_count>
      <attachid>133695</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-25 15:57:59 -0700</bug_when>
    <thetext>Comment on attachment 133695
the patch

Attachment 133695 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12131501</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587363</commentid>
    <comment_count>13</comment_count>
      <attachid>133696</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-03-25 15:58:14 -0700</bug_when>
    <thetext>Created attachment 133696
the patch

Putting up for EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587376</commentid>
    <comment_count>14</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-03-25 16:51:22 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/112040</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133653</attachid>
            <date>2012-03-24 15:33:49 -0700</date>
            <delta_ts>2012-03-24 15:59:07 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>inttodouble_patch_1.diff</filename>
            <type>text/plain</type>
            <size>22851</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTEyMDE0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBA
CisyMDEyLTAzLTI0ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIGludC10by1kb3VibGUgY29udmVyc2lvbiBzaG91bGQgYmUgcmV2ZWFsZWQgdG8gQ1NFCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjEzNQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgV29y
ayBpbiBwcm9ncmVzcyEKKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogYnl0ZWNvZGUvUHJlZGljdGVkVHlwZS5oOgorICAgICAg
ICAoSlNDOjppc0FjdGlvbmFibGVJbnRNdXRhYmxlQXJyYXlQcmVkaWN0aW9uKToKKyAgICAgICAg
KEpTQyk6CisgICAgICAgIChKU0M6OmlzQWN0aW9uYWJsZUZsb2F0TXV0YWJsZUFycmF5UHJlZGlj
dGlvbik6CisgICAgICAgIChKU0M6OmlzQWN0aW9uYWJsZVR5cGVkTXV0YWJsZUFycmF5UHJlZGlj
dGlvbik6CisgICAgICAgIChKU0M6OmlzQWN0aW9uYWJsZU11dGFibGVBcnJheVByZWRpY3Rpb24p
OgorICAgICAgICAqIGRmZy9ERkdDb21tb24uaDoKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFz
ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6cnVuKToKKyAgICAgICAgKEpT
Qzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cEJsb2NrKToKKyAgICAgICAgKEZpeHVwUGhhc2UpOgor
ICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgIChKU0M6
OkRGRzo6Rml4dXBQaGFzZTo6Zml4RG91YmxlRWRnZSk6CisgICAgICAgICogZGZnL0RGR0luc2Vy
dGlvblNldC5oOiBBZGRlZC4KKyAgICAgICAgKERGRyk6CisgICAgICAgIChJbnNlcnRpb24pOgor
ICAgICAgICAoSlNDOjpERkc6Okluc2VydGlvbjo6SW5zZXJ0aW9uKToKKyAgICAgICAgKEpTQzo6
REZHOjpJbnNlcnRpb246OmluZGV4KToKKyAgICAgICAgKEpTQzo6REZHOjpJbnNlcnRpb246OmVs
ZW1lbnQpOgorICAgICAgICAoSW5zZXJ0aW9uU2V0KToKKyAgICAgICAgKEpTQzo6REZHOjpJbnNl
cnRpb25TZXQ6Okluc2VydGlvblNldCk6CisgICAgICAgIChKU0M6OkRGRzo6SW5zZXJ0aW9uU2V0
OjphcHBlbmQpOgorICAgICAgICAoSlNDOjpERkc6Okluc2VydGlvblNldDo6ZXhlY3V0ZSk6Cisg
ICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgIChERkcpOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVWYWx1ZVRvSW50MzIpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5oOgorICAgICAgICAoSlNDOjpERkc6OkludGVnZXJPcGVyYW5kOjpJbnRlZ2VyT3BlcmFuZCk6
CisgICAgICAgIChKU0M6OkRGRzo6RG91YmxlT3BlcmFuZDo6RG91YmxlT3BlcmFuZCk6CisgICAg
ICAgIChKU0M6OkRGRzo6SlNWYWx1ZU9wZXJhbmQ6OkpTVmFsdWVPcGVyYW5kKToKKyAgICAgICAg
KEpTQzo6REZHOjpTdG9yYWdlT3BlcmFuZDo6U3RvcmFnZU9wZXJhbmQpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0ZUludGVnZXJPcGVyYW5kOjpTcGVjdWxhdGVJbnRlZ2VyT3BlcmFuZCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kOjpTcGVjdWxh
dGVTdHJpY3RJbnQzMk9wZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZURvdWJs
ZU9wZXJhbmQ6OlNwZWN1bGF0ZURvdWJsZU9wZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0ZUNlbGxPcGVyYW5kOjpTcGVjdWxhdGVDZWxsT3BlcmFuZCk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRlQm9vbGVhbk9wZXJhbmQ6OlNwZWN1bGF0ZUJvb2xlYW5PcGVyYW5kKToK
KwogMjAxMi0wMy0yNCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAg
IERGRzo6Tm9kZTo6c2hvdWxkTm90U3BlY3VsYXRlSW50ZWdlcigpIHNob3VsZCBiZSBlbGltaW5h
dGVkCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTEyMDEzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTc0LDYgKzc0LDcgQEAKIAkJMEYyNDJEQTcxM0Yz
QjFFODAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjQyREE1MTNGM0IxQkIwMDdBREQ0QyAv
KiBXZWFrUmVmZXJlbmNlSGFydmVzdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyQkRDMTUxNTFDNUQ0RDAwQ0Q4OTEwIC8qIERGR0ZpeHVw
UGhhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEYyQkRDMTIxNTFDNUQ0QTAwQ0Q4OTEwIC8qIERGR0ZpeHVwUGhhc2UuY3BwICovOyB9OwogCQkw
RjJCREMxNjE1MUM1RDRGMDBDRDg5MTAgLyogREZHRml4dXBQaGFzZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQkRDMTMxNTFDNUQ0QTAwQ0Q4OTEw
IC8qIERGR0ZpeHVwUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQkwRjJCREMyMTE1MUU4MDNCMDBDRDg5MTAgLyogREZHSW5zZXJ0aW9uU2V0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJCREMx
RjE1MUU4MDM4MDBDRDg5MTAgLyogREZHSW5zZXJ0aW9uU2V0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyQzU1NkYxNDczOEYzMTAwMTIxRTRG
IC8qIERGR0NvZGVCbG9ja3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMkM1NTZFMTQ3MzhGMkUwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyQzU1NzAx
NDczOEYzNTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzU1NkQxNDczOEYyRTAwMTIxRTRGIC8qIERG
R0NvZGVCbG9ja3MuY3BwICovOyB9OwogCQkwRjQyNkE0ODE0NjBDQkIzMDAxMzFGOEYgLyogVmFs
dWVSZWNvdmVyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY0MjZBNDUxNDYwQ0JBQjAwMTMxRjhGIC8qIFZhbHVlUmVjb3ZlcnkuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNzI0LDYgKzcyNSw3IEBA
CiAJCTBGMjQyREE1MTNGM0IxQkIwMDdBREQ0QyAvKiBXZWFrUmVmZXJlbmNlSGFydmVzdGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyQkRDMTIxNTFDNUQ0QTAwQ0Q4OTEw
IC8qIERGR0ZpeHVwUGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gREZHRml4dXBQaGFzZS5jcHA7IHBhdGggPSBkZmcvREZHRml4dXBQaGFzZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkJEQzEzMTUxQzVENEEwMENEODkxMCAvKiBERkdG
aXh1cFBoYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0ZpeHVwUGhh
c2UuaDsgcGF0aCA9IGRmZy9ERkdGaXh1cFBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGMkJEQzFGMTUxRTgwMzgwMENEODkxMCAvKiBERkdJbnNlcnRpb25TZXQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHSW5zZXJ0aW9uU2V0Lmg7IHBhdGggPSBk
ZmcvREZHSW5zZXJ0aW9uU2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkM1
NTZEMTQ3MzhGMkUwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERGR0NvZGVCbG9ja3MuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjJDNTU2RTE0NzM4RjJFMDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBERkdDb2RlQmxvY2tzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDI2QTQ1MTQ2MENCQUIwMDEzMUY4RiAvKiBWYWx1
ZVJlY292ZXJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZhbHVlUmVjb3Zl
cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5OTQsNiArMTk5Niw3IEBACiAJ
CQkJODZBRTZDNEMxMzZBMTFFNDAwOTYzMDEyIC8qIERGR0dQUkluZm8uaCAqLywKIAkJCQk4NkVD
OURCNzEzMjhERjgyMDAyQjJBRDcgLyogREZHR3JhcGguY3BwICovLAogCQkJCTg2RUM5REI4MTMy
OERGODIwMDJCMkFENyAvKiBERkdHcmFwaC5oICovLAorCQkJCTBGMkJEQzFGMTUxRTgwMzgwMENE
ODkxMCAvKiBERkdJbnNlcnRpb25TZXQuaCAqLywKIAkJCQk4NkVDOURCQjEzMjhERjgyMDAyQjJB
RDcgLyogREZHSklUQ29tcGlsZXIuY3BwICovLAogCQkJCTg2RUM5REJDMTMyOERGODIwMDJCMkFE
NyAvKiBERkdKSVRDb21waWxlci5oICovLAogCQkJCTg2RUNBM0U5MTMyREVGMUMwMDJCMkFENyAv
KiBERkdOb2RlLmggKi8sCkBAIC0yNTAxLDYgKzI1MDQsNyBAQAogCQkJCTBGQTU4MUJCMTUwRTk1
MzAwMEI5QTJEOSAvKiBERkdOb2RlRmxhZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQTU4MUJD
MTUwRTk1MzAwMEI5QTJEOSAvKiBERkdOb2RlVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYy
QkRDMTYxNTFDNUQ0RjAwQ0Q4OTEwIC8qIERGR0ZpeHVwUGhhc2UuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGMkJEQzIxMTUxRTgwM0IwMENEODkxMCAvKiBERkdJbnNlcnRpb25TZXQuaCBpbiBIZWFk
ZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwogCQl9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWRpY3RlZFR5
cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlZGlj
dGVkVHlwZS5oCShyZXZpc2lvbiAxMTIwMTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUHJlZGljdGVkVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTksMTAgKzE1OSw5IEBA
IGlubGluZSBib29sIGlzRmxvYXQ2NEFycmF5UHJlZGljdGlvbihQcmUKICAgICByZXR1cm4gdmFs
dWUgPT0gUHJlZGljdEZsb2F0NjRBcnJheTsKIH0KIAotaW5saW5lIGJvb2wgaXNBY3Rpb25hYmxl
TXV0YWJsZUFycmF5UHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVlKQoraW5saW5lIGJvb2wg
aXNBY3Rpb25hYmxlSW50TXV0YWJsZUFycmF5UHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVl
KQogewotICAgIHJldHVybiBpc0FycmF5UHJlZGljdGlvbih2YWx1ZSkKLSAgICAgICAgfHwgaXNC
eXRlQXJyYXlQcmVkaWN0aW9uKHZhbHVlKQorICAgIHJldHVybiBpc0J5dGVBcnJheVByZWRpY3Rp
b24odmFsdWUpCiAjaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKICAgICAgICAgfHwgaXNJbnQ4
QXJyYXlQcmVkaWN0aW9uKHZhbHVlKQogICAgICAgICB8fCBpc0ludDE2QXJyYXlQcmVkaWN0aW9u
KHZhbHVlKQpAQCAtMTcxLDEzICsxNzAsMzAgQEAgaW5saW5lIGJvb2wgaXNBY3Rpb25hYmxlTXV0
YWJsZUFycmF5UHJlZAogICAgICAgICB8fCBpc1VpbnQ4QXJyYXlQcmVkaWN0aW9uKHZhbHVlKQog
ICAgICAgICB8fCBpc1VpbnQ4Q2xhbXBlZEFycmF5UHJlZGljdGlvbih2YWx1ZSkKICAgICAgICAg
fHwgaXNVaW50MTZBcnJheVByZWRpY3Rpb24odmFsdWUpCi0gICAgICAgIHx8IGlzVWludDMyQXJy
YXlQcmVkaWN0aW9uKHZhbHVlKQorICAgICAgICB8fCBpc1VpbnQzMkFycmF5UHJlZGljdGlvbih2
YWx1ZSk7Cit9CisKK2lubGluZSBib29sIGlzQWN0aW9uYWJsZUZsb2F0TXV0YWJsZUFycmF5UHJl
ZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVlKQoreworICAgIHJldHVybiBmYWxzZQogI2lmIENQ
VShYODYpIHx8IENQVShYODZfNjQpCiAgICAgICAgIHx8IGlzRmxvYXQzMkFycmF5UHJlZGljdGlv
bih2YWx1ZSkKICNlbmRpZgogICAgICAgICB8fCBpc0Zsb2F0NjRBcnJheVByZWRpY3Rpb24odmFs
dWUpOwogfQogCitpbmxpbmUgYm9vbCBpc0FjdGlvbmFibGVUeXBlZE11dGFibGVBcnJheVByZWRp
Y3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gaXNBY3Rpb25hYmxlSW50
TXV0YWJsZUFycmF5UHJlZGljdGlvbih2YWx1ZSkKKyAgICAgICAgfHwgaXNBY3Rpb25hYmxlRmxv
YXRNdXRhYmxlQXJyYXlQcmVkaWN0aW9uKHZhbHVlKQorfQorCitpbmxpbmUgYm9vbCBpc0FjdGlv
bmFibGVNdXRhYmxlQXJyYXlQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCit7CisgICAg
cmV0dXJuIGlzQXJyYXlQcmVkaWN0aW9uKHZhbHVlKQorICAgICAgICB8fCBpc0FjdGlvbmFibGVU
eXBlZE11dGFibGVBcnJheVByZWRpY3Rpb24odmFsdWUpCit9CisKIGlubGluZSBib29sIGlzQWN0
aW9uYWJsZUFycmF5UHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVlKQogewogICAgIHJldHVy
biBpc1N0cmluZ1ByZWRpY3Rpb24odmFsdWUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ29tbW9uLmgJKHJldmlzaW9uIDExMjAxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ29tbW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDkgKzM3LDkgQEAKICNkZWZpbmUg
REZHX0VOQUJMRShERkdfRkVBVFVSRSkgKGRlZmluZWQgREZHX0VOQUJMRV8jI0RGR19GRUFUVVJF
ICYmIERGR19FTkFCTEVfIyNERkdfRkVBVFVSRSkKIAogLy8gRW1pdCB2YXJpb3VzIGxvZ2dpbmcg
aW5mb3JtYXRpb24gZm9yIGRlYnVnZ2luZywgaW5jbHVkaW5nIGR1bXBpbmcgdGhlIGRhdGFmbG93
IGdyYXBocy4KLSNkZWZpbmUgREZHX0VOQUJMRV9ERUJVR19WRVJCT1NFIDAKKyNkZWZpbmUgREZH
X0VOQUJMRV9ERUJVR19WRVJCT1NFIDEKIC8vIEVtaXQgZHVtcHMgZHVyaW5nIHByb3BhZ2F0aW9u
LCBpbiBhZGRpdGlvbiB0byBqdXN0IGFmdGVyLgotI2RlZmluZSBERkdfRU5BQkxFX0RFQlVHX1BS
T1BBR0FUSU9OX1ZFUkJPU0UgMAorI2RlZmluZSBERkdfRU5BQkxFX0RFQlVHX1BST1BBR0FUSU9O
X1ZFUkJPU0UgMQogLy8gRW1pdCBsb2dnaW5nIGZvciBPU1IgZXhpdCB2YWx1ZSByZWNvdmVyaWVz
IGF0IGV2ZXJ5IG5vZGUsIG5vdCBqdXN0IG5vZGVzIHRoYXQKIC8vIGFjdHVhbGx5IGhhcyBzcGVj
dWxhdGlvbiBjaGVja3MuCiAjZGVmaW5lIERGR19FTkFCTEVfVkVSQk9TRV9WQUxVRV9SRUNPVkVS
SUVTIDAKQEAgLTYyLDcgKzYyLDcgQEAKIC8vIEVtaXQgYSBicmVha3BvaW50IGludG8gdGhlIHNw
ZWN1bGF0aW9uIGZhaWx1cmUgY29kZS4KICNkZWZpbmUgREZHX0VOQUJMRV9KSVRfQlJFQUtfT05f
U1BFQ1VMQVRJT05fRkFJTFVSRSAwCiAvLyBMb2cgZXZlcnkgc3BlY3VsYXRpb24gZmFpbHVyZS4K
LSNkZWZpbmUgREZHX0VOQUJMRV9WRVJCT1NFX1NQRUNVTEFUSU9OX0ZBSUxVUkUgMAorI2RlZmlu
ZSBERkdfRU5BQkxFX1ZFUkJPU0VfU1BFQ1VMQVRJT05fRkFJTFVSRSAxCiAvLyBEaXNhYmxlIHRo
ZSBERkcgSklUIHdpdGhvdXQgaGF2aW5nIHRvIHRvdWNoIFBsYXRmb3JtLmgKICNkZWZpbmUgREZH
X0RFQlVHX0xPQ0FMX0RJU0JBTEUgMAogLy8gRW5hYmxlIE9TUiBlbnRyeSBmcm9tIGJhc2VsaW5l
IEpJVC4KQEAgLTk3LDYgKzk3LDcgQEAgc3RydWN0IE5vZGVJbmRleFRyYWl0cyB7CiAKIGVudW0g
VXNlS2luZCB7CiAgICAgVW50eXBlZFVzZSwKKyAgICBEb3VibGVVc2UsCiAgICAgTGFzdFVzZUtp
bmQgLy8gTXVzdCBhbHdheXMgYmUgdGhlIGxhc3QgZW50cnkgaW4gdGhlIGVudW0sIGFzIGl0IGlz
IHVzZWQgdG8gZGVub3RlIHRoZSBudW1iZXIgb2YgZW51bSBlbGVtZW50cy4KIH07CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24g
MTEyMDEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShERkdfSklUKQogCiAj
aW5jbHVkZSAiREZHR3JhcGguaCIKKyNpbmNsdWRlICJERkdJbnNlcnRpb25TZXQuaCIKICNpbmNs
dWRlICJERkdQaGFzZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CkBAIC00
MiwxMSArNDMsMjAgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgcnVuKCkKICAgICB7Ci0gICAg
ICAgIGZvciAobV9jb21waWxlSW5kZXggPSAwOyBtX2NvbXBpbGVJbmRleCA8IG1fZ3JhcGguc2l6
ZSgpOyArK21fY29tcGlsZUluZGV4KQotICAgICAgICAgICAgZml4dXBOb2RlKG1fZ3JhcGhbbV9j
b21waWxlSW5kZXhdKTsKKyAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSAwOyBi
bG9ja0luZGV4IDwgbV9ncmFwaC5tX2Jsb2Nrcy5zaXplKCk7ICsrYmxvY2tJbmRleCkKKyAgICAg
ICAgICAgIGZpeHVwQmxvY2sobV9ncmFwaC5tX2Jsb2Nrc1tibG9ja0luZGV4XS5nZXQoKSk7CiAg
ICAgfQogCiBwcml2YXRlOgorICAgIHZvaWQgZml4dXBCbG9jayhCYXNpY0Jsb2NrKiBibG9jaykK
KyAgICB7CisgICAgICAgIGZvciAobV9pbmRleEluQmxvY2sgPSAwOyBtX2luZGV4SW5CbG9jayA8
IGJsb2NrLT5zaXplKCk7ICsrbV9pbmRleEluQmxvY2spIHsKKyAgICAgICAgICAgIG1fY29tcGls
ZUluZGV4ID0gYmxvY2stPmF0KG1faW5kZXhJbkJsb2NrKTsKKyAgICAgICAgICAgIGZpeHVwTm9k
ZShtX2dyYXBoW21fY29tcGlsZUluZGV4XSk7CisgICAgICAgIH0KKyAgICAgICAgbV9pbnNlcnRp
b25TZXQuZXhlY3V0ZSgqYmxvY2spOworICAgIH0KKyAgICAKICAgICB2b2lkIGZpeHVwTm9kZShO
b2RlJiBub2RlKQogICAgIHsKICAgICAgICAgaWYgKCFub2RlLnNob3VsZEdlbmVyYXRlKCkpCkBA
IC0xNTIsNiArMTYyLDExOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgICAgIAorICAgICAgICBjYXNlIENvbXBhcmVMZXNzOgorICAgICAgICBjYXNl
IENvbXBhcmVMZXNzRXE6CisgICAgICAgIGNhc2UgQ29tcGFyZUdyZWF0ZXI6CisgICAgICAgIGNh
c2UgQ29tcGFyZUdyZWF0ZUVxOiB7CisgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3Vs
YXRlSW50ZWdlcihtX2dyYXBoW25vZGUuY2hpbGQxKCldLCBtX2dyYXBoW25vZGUuY2hpbGQyKCld
KSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGlmICghTm9kZTo6c2hvdWxk
U3BlY3VsYXRlTnVtYmVyKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0sIG1fZ3JhcGhbbm9kZS5jaGls
ZDIoKV0pKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZml4RG91YmxlRWRn
ZShub2RlLmNoaWxkcmVuLmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZpeERvdWJsZUVkZ2Uobm9k
ZS5jaGlsZHJlbi5jaGlsZDIoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
ICAgICAgICAgCisgICAgICAgIGNhc2UgTG9naWNhbE5vdDogeworICAgICAgICAgICAgaWYgKG1f
Z3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlSW50ZWdlcigpKQorICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKCFtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNo
b3VsZFNwZWN1bGF0ZU51bWJlcigpKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgZml4RG91YmxlRWRnZShub2RlLmNoaWxkcmVuLmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBCcmFuY2g6IHsKKyAg
ICAgICAgICAgIGlmIChtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZUludGVn
ZXIoKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGlmICghbV9ncmFwaFtu
b2RlLmNoaWxkMSgpXS5zaGlvdWxkU3BlY3VsYXRlTnVtYmVyKCkpCisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBmaXhEb3VibGVFZGdlKG5vZGUuY2hpbGRyZW4uY2hpbGQxKCkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBj
YXNlIFNldExvY2FsOiB7CisgICAgICAgICAgICBpZiAobV9ncmFwaC5pc0NhcHR1cmVkKG5vZGUu
bG9jYWwoKSkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAoIW5vZGUu
dmFyaWFibGVBY2Nlc3NEYXRhKCktPnNob3VsZFVzZURvdWJsZUZvcm1hdCgpKQorICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgZml4RG91YmxlRWRnZShub2RlLmNoaWxkcmVuLmNo
aWxkMSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgICAgICAKKyAg
ICAgICAgY2FzZSBBcml0aEFkZDoKKyAgICAgICAgY2FzZSBWYWx1ZUFkZDogeworICAgICAgICAg
ICAgaWYgKG1fZ3JhcGguYWRkU2hvdWxkU3BlY3VsYXRlSW50ZWdlcihub2RlKSkKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGlmICghTm9kZTo6c2hvdWxkU3BlY3VsYXRlTnVt
YmVyKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0sIG1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0pKQorICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZml4RG91YmxlRWRnZShub2RlLmNoaWxk
cmVuLmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZpeERvdWJsZUVkZ2Uobm9kZS5jaGlsZHJlbi5j
aGlsZDEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAgICAgCisg
ICAgICAgIGNhc2UgQXJpdGhTdWI6IHsKKyAgICAgICAgICAgIGlmIChtX2dyYXBoLmFkZFNob3Vs
ZFNwZWN1bGF0ZUludGVnZXIobm9kZSkKKyAgICAgICAgICAgICAgICAmJiBub2RlLmNhblNwZWN1
bGF0ZUludGVnZXIoKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGZpeERv
dWJsZUVkZ2Uobm9kZS5jaGlsZHJlbi5jaGlsZDEoKSk7CisgICAgICAgICAgICBmaXhEb3VibGVF
ZGdlKG5vZGUuY2hpbGRyZW4uY2hpbGQxKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEFyaXRoTmVnYXRlOiB7CisgICAgICAgICAg
ICBpZiAobV9ncmFwaC5uZWdhdGVTaG91bGRTcGVjdWxhdGVJbnRlZ2VyKG5vZGUpKQorICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZml4RG91YmxlRWRnZShub2RlLmNoaWxkcmVu
LmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgICAgICAK
KyAgICAgICAgY2FzZSBBcml0aE1pbjoKKyAgICAgICAgY2FzZSBBcml0aE1heDoKKyAgICAgICAg
Y2FzZSBBcml0aE11bDoKKyAgICAgICAgY2FzZSBBcml0aERpdjoKKyAgICAgICAgY2FzZSBBcml0
aE1vZDogeworICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUludGVnZXIobV9n
cmFwaFtub2RlLmNoaWxkMSgpXSwgbV9ncmFwaFtub2RlLmNoaWxkMigpXSkKKyAgICAgICAgICAg
ICAgICAmJiBub2RlLmNhblNwZWN1bGF0ZUludGVnZXIoKSkKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGZpeERvdWJsZUVkZ2Uobm9kZS5jaGlsZHJlbi5jaGlsZDEoKSk7Cisg
ICAgICAgICAgICBmaXhEb3VibGVFZGdlKG5vZGUuY2hpbGRyZW4uY2hpbGQxKCkpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEFyaXRo
QWJzOiB7CisgICAgICAgICAgICBpZiAobV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVj
dWxhdGVJbnRlZ2VyKCkKKyAgICAgICAgICAgICAgICAmJiBub2RlLmNhblNwZWN1bGF0ZUludGVn
ZXIoKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGZpeERvdWJsZUVkZ2Uo
bm9kZS5jaGlsZHJlbi5jaGlsZDEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgICAgICAgICAgCisgICAgICAgIGNhc2UgQXJpdGhTcXJ0OiB7CisgICAgICAgICAgICBmaXhE
b3VibGVFZGdlKG5vZGUuY2hpbGRyZW4uY2hpbGQxKCkpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIFB1dEJ5VmFsOiB7CisgICAgICAg
ICAgICBpZiAoIW1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ucHJlZGljdGlvbigpIHx8ICFtX2dyYXBo
W25vZGUuY2hpbGQyKCldLnByZWRpY3Rpb24oKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIGlmICghbV9ncmFwaFtub2RlLmNoaWxkMigpXS5zaG91bGRTcGVjdWxhdGVJbnRl
Z2VyKCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAoaXNBY3Rpb25h
YmxlSW50TXV0YWJsZUFycmF5UHJlZGljdGlvbihtX2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRp
Y3Rpb24oKSkpIHsKKyAgICAgICAgICAgICAgICBpZiAobV9ncmFwaFtub2RlLmNoaWxkMygpXS5p
c0NvbnN0YW50KCkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IGlmIChtX2dyYXBoW25vZGUuY2hpbGQzKCldLnNob3VsZFNwZWN1bGF0ZUludGVnZXIoKSkKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZml4RG91YmxlRWRnZShu
b2RlLmNoaWxkcmVuLmNoaWxkMygpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGlmIChpc0FjdGlvbmFibGVGbG9hdE11dGFibGVBcnJheVByZWRp
Y3Rpb24obV9ncmFwaFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9uKCkpKSB7CisgICAgICAgICAg
ICAgICAgZml4RG91YmxlRWRnZShub2RlLmNoaWxkcmVuLmNoaWxkMygpKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgICAgICAgICAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CkBAIC0xNzksNyArMzAyLDI3IEBAIHByaXZhdGU6CiAgICAgICAgIGVkZ2UgPSBuZXdF
ZGdlOwogICAgIH0KICAgICAKKyAgICB2b2lkIGZpeERvdWJsZUVkZ2UoTm9kZSYgc291cmNlLCBF
ZGdlJiBlZGdlKQorICAgIHsKKyAgICAgICAgaWYgKCFtX2dyYXBoW2VkZ2VdLnNob3VsZFNwZWN1
bGF0ZUludGVnZXIoKSkgeworICAgICAgICAgICAgZWRnZS5zZXRVc2VLaW5kKERvdWJsZVVzZSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIE5vZGVJ
bmRleCByZXN1bHRJbmRleCA9IChOb2RlSW5kZXgpbV9ncmFwaC5zaXplKCk7CisgICAgICAgIG1f
Z3JhcGguYXBwZW5kKE5vZGUoSW50MzJUb0RvdWJsZSwgc291cmNlLmNvZGVPcmlnaW4sIGVkZ2Uu
aW5kZXgoKSkpOworICAgICAgICBtX2luc2VydGlvblNldC5hcHBlbmQobV9pbmRleEluQmxvY2ss
IHJlc3VsdEluZGV4KTsKKyAgICAgICAgCisgICAgICAgIE5vZGUmIGludDMyVG9Eb3VibGUgPSBt
X2dyYXBoW3Jlc3VsdEluZGV4XTsKKyAgICAgICAgaW50MzJUb0RvdWJsZS5wcmVkaWN0KFByZWRp
Y3REb3VibGUpOworICAgICAgICBpbnQzMlRvRG91YmxlLnJlZigpOworICAgICAgICAKKyAgICAg
ICAgZWRnZSA9IEVkZ2UocmVzdWx0SW5kZXgsIERvdWJsZVVzZSk7CisgICAgfQorICAgIAorICAg
IHVuc2lnbmVkIG1faW5kZXhJbkJsb2NrOwogICAgIE5vZGVJbmRleCBtX2NvbXBpbGVJbmRleDsK
KyAgICBJbnNlcnRpb25TZXQ8Tm9kZUluZGV4PiBtX2luc2VydGlvblNldDsKIH07CiAgICAgCiB2
b2lkIHBlcmZvcm1GaXh1cChHcmFwaCYgZ3JhcGgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0luc2VydGlvblNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSW5zZXJ0aW9uU2V0LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0luc2VydGlvblNldC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDk2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5k
ZWYgREZHSW5zZXJ0aW9uU2V0X2gKKyNkZWZpbmUgREZHSW5zZWN0aW9uU2V0X2gKKworI2luY2x1
ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgRU5BQkxFKERGR19KSVQpCisKKyNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKwordGVtcGxh
dGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+CitjbGFzcyBJbnNlcnRpb24geworcHVibGljOgorICAg
IEluc2VydGlvbihzaXplX3QgaW5kZXgsIGNvbnN0IEVsZW1lbnRUeXBlJiBlbGVtZW50KQorICAg
ICAgICA6IG1faW5kZXgoaW5kZXgpCisgICAgICAgICwgbV9lbGVtZW50KGVsZW1lbnQpCisgICAg
eworICAgIH0KKyAgICAKKyAgICBzaXplX3QgaW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2luZGV4
OyB9CisgICAgY29uc3QgRWxlbWVudFR5cGUmIGVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2Vs
ZW1lbnQ7IH0KK3ByaXZhdGU6CisgICAgc2l6ZV90IG1faW5kZXg7CisgICAgRWxlbWVudFR5cGUg
bV9lbGVtZW50OworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+CitjbGFzcyBJ
bnNlcnRpb25TZXQgeworcHVibGljOgorICAgIEluc2VydGlvblNldCgpIHsgfQorICAgIAorICAg
IHZvaWQgYXBwZW5kKGNvbnN0IEluc2VydGlvbjxFbGVtZW50VHlwZT4mIGluc2VydGlvbikKKyAg
ICB7CisgICAgICAgIEFTU0VSVCghbV9pbnNlcnRpb25zLnNpemUoKSB8fCBtX2luc2VydGlvbnMu
bGFzdCgpLmluZGV4KCkgPD0gaW5zZXJ0aW9uLmluZGV4KCkpOworICAgICAgICBtX2luc2VydGlv
bnMuYXBwZW5kKGluc2VydGlvbik7CisgICAgfQorICAgIAorICAgIHZvaWQgYXBwZW5kKHNpemVf
dCBpbmRleCwgY29uc3QgRWxlbWVudFR5cGUmIGVsZW1lbnQpCisgICAgeworICAgICAgICBhcHBl
bmQoSW5zZXJ0aW9uPEVsZW1lbnRUeXBlPihpbmRleCwgZWxlbWVudCkpOworICAgIH0KKyAgICAK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xsZWN0aW9uVHlwZT4KKyAgICB2b2lkIGV4ZWN1dGUo
Q29sbGVjdGlvblR5cGUmIGNvbGxlY3Rpb24pCisgICAgeworICAgICAgICBpZiAoIW1faW5zZXJ0
aW9ucy5zaXplKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNvbGxlY3Rpb24uZ3Jv
dyhjb2xsZWN0aW9uLnNpemUoKSArIG1faW5zZXJ0aW9ucy5zaXplKCkpOworICAgICAgICBzaXpl
X3QgbGFzdEluZGV4ID0gY29sbGVjdGlvbi5zaXplKCk7CisgICAgICAgIGZvciAoc2l6ZV90IGlu
ZGV4SW5JbnNlcnRpb25zID0gbV9pbnNlcnRpb25zLnNpemUoKTsgaW5kZXhJbkluc2VydGlvbnMt
LTspIHsKKyAgICAgICAgICAgIEluc2VydGlvbjxFbGVtZW50VHlwZT4mIGluc2VydGlvbiA9IG1f
aW5zZXJ0aW9uc1tpbmRleEluSW5zZXJ0aW9uc107CisgICAgICAgICAgICBzaXplX3QgZmlyc3RJ
bmRleCA9IGluc2VydGlvbi5pbmRleCgpICsgaW5kZXhJbkluc2VydGlvbnM7CisgICAgICAgICAg
ICBzaXplX3QgaW5kZXhPZmZzZXQgPSBpbmRleEluSW5zZXJ0aW9ucyArIDE7CisgICAgICAgICAg
ICBmb3IgKHNpemVfdCBpID0gbGFzdEluZGV4OyBpLS0gPiBmaXJzdEluZGV4OykKKyAgICAgICAg
ICAgICAgICBjb2xsZWN0aW9uW2ldID0gY29sbGVjdGlvbltpIC0gaW5kZXhPZmZzZXRdOworICAg
ICAgICAgICAgY29sbGVjdGlvbltmaXJzdEluZGV4XSA9IGluc2VydGlvbi5lbGVtZW50KCk7Cisg
ICAgICAgICAgICBsYXN0SW5kZXggPSBmaXJzdEluZGV4OworICAgICAgICB9CisgICAgICAgIG1f
aW5zZXJ0aW9ucy5yZXNpemUoMCk7CisgICAgfQorcHJpdmF0ZToKKyAgICBWZWN0b3I8SW5zZXJ0
aW9uPEVsZW1lbnRUeXBlPiwgOD4gbV9pbnNlcnRpb25zOworfTsKKworfSB9IC8vIG5hbWVzcGFj
ZSBKU0M6OkRGRworCisjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCisKKyNlbmRpZiAvLyBERkdJ
bnNlcnRpb25TZXRfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVU
eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlw
ZS5oCShyZXZpc2lvbiAxMTIwMTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc1LDYgKzc1LDkgQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKFZhbHVlVG9JbnQzMiwgTm9kZVJlc3VsdEludDMy
IHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIC8qIFVzZWQgdG8gYm94IHRoZSByZXN1bHQgb2Yg
VVJTaGlmdCBub2RlcyAocmVzdWx0IGhhcyByYW5nZSAwLi4yXjMyLTEpLiAqL1wKICAgICBtYWNy
byhVSW50MzJUb051bWJlciwgTm9kZVJlc3VsdE51bWJlcikgXAorICAgIC8qIFVzZWQgdG8gY2Fz
dCBrbm93biBpbnRlZ2VycyB0byBkb3VibGVzLCBzbyBhcyB0byBzZXBhcmF0ZSB0aGUgZG91Ymxl
IGZvcm0gKi9cCisgICAgLyogb2YgdGhlIHZhbHVlIGZyb20gdGhlIGludGVnZXIgZm9ybS4gKi9c
CisgICAgbWFjcm8oSW50MzJUb0RvdWJsZSwgTm9kZVJlc3VsdE51bWJlcikgXAogICAgIFwKICAg
ICAvKiBOb2RlcyBmb3IgYXJpdGhtZXRpYyBvcGVyYXRpb25zLiAqL1wKICAgICBtYWNybyhBcml0
aEFkZCwgTm9kZVJlc3VsdE51bWJlcikgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDExMjAxMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNTM3LDcgKzE1MzcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVU
b0ludDMyCiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHZW5lcmF0ZWRPcGVyYW5kRG91YmxlOiB7
CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwotICAgICAgICAgICAgU3Bl
Y3VsYXRlRG91YmxlT3BlcmFuZCBvcDEodGhpcywgbm9kZS5jaGlsZDEoKSk7CisgICAgICAgICAg
ICBEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAgICAgIEZQ
UlJlZyBmcHIgPSBvcDEuZnByKCk7CiAgICAgICAgICAgICBHUFJSZWcgZ3ByID0gcmVzdWx0Lmdw
cigpOwogICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgdHJ1bmNhdGVkVG9JbnRlZ2VyID0g
bV9qaXQuYnJhbmNoVHJ1bmNhdGVEb3VibGVUb0ludDMyKGZwciwgZ3ByLCBKSVRDb21waWxlcjo6
QnJhbmNoSWZUcnVuY2F0ZVN1Y2Nlc3NmdWwpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMTEyMDEzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xOTg0LDYgKzE5ODQsNyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB7CiAgICAgICAgIEFTU0VS
VChtX2ppdCk7CisgICAgICAgIEFTU0VSVCh1c2UudXNlS2luZCgpICE9IERvdWJsZVVzZSk7CiAg
ICAgICAgIGlmIChqaXQtPmlzRmlsbGVkKG1faW5kZXgpKQogICAgICAgICAgICAgZ3ByKCk7CiAg
ICAgfQpAQCAtMjAzMyw2ICsyMDM0LDE1IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2Zwck9ySW52
YWxpZChJbnZhbGlkRlBSUmVnKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1faml0KTsKKyAgICAg
ICAgCisgICAgICAgIC8vIFRoaXMgaXMgY291bnRlci1pbnR1aXRpdmUgYnV0IGNvcnJlY3QuIERv
dWJsZU9wZXJhbmQgaXMgaW50ZW5kZWQgdG8KKyAgICAgICAgLy8gYmUgdXNlZCBvbmx5IHdoZW4g
eW91J3JlIGEgbm9kZSB0aGF0IGlzIGhhcHB5IHRvIGFjY2VwdCBhbiB1bnR5cGVkCisgICAgICAg
IC8vIHZhbHVlLCBidXQgd2lsbCBzcGVjaWFsLWNhc2UgZm9yIGRvdWJsZXMgKHVzaW5nIERvdWJs
ZU9wZXJhbmQpIGlmIHRoZQorICAgICAgICAvLyB2YWx1ZSBoYXBwZW5lZCB0byBhbHJlYWR5IGJl
IHJlcHJlc2VudGVkIGFzIGEgZG91YmxlLiBUaGUgaW1wbGljYXRpb24KKyAgICAgICAgLy8gaXMg
dGhhdCB5b3Ugd2lsbCBub3QgdHJ5IHRvIGZvcmNlIHRoZSB2YWx1ZSB0byBiZWNvbWUgYSBkb3Vi
bGUgaWYgaXQKKyAgICAgICAgLy8gaXMgbm90IG9uZSBhbHJlYWR5LgorICAgICAgICBBU1NFUlQo
dXNlLnVzZUtpbmQoKSAhPSBEb3VibGVVc2UpOworICAgICAgICAKICAgICAgICAgaWYgKGppdC0+
aXNGaWxsZWREb3VibGUobV9pbmRleCkpCiAgICAgICAgICAgICBmcHIoKTsKICAgICB9CkBAIC0y
MDc4LDYgKzIwODgsNyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB7CiAgICAgICAgIEFTU0VSVCht
X2ppdCk7CisgICAgICAgIEFTU0VSVCh1c2UudXNlS2luZCgpICE9IERvdWJsZVVzZSk7CiAjaWYg
VVNFKEpTVkFMVUU2NCkKICAgICAgICAgaWYgKGppdC0+aXNGaWxsZWQobV9pbmRleCkpCiAgICAg
ICAgICAgICBncHIoKTsKQEAgLTIxODgsNiArMjE5OSw3IEBAIHB1YmxpYzoKICAgICAgICAgLCBt
X2dwck9ySW52YWxpZChJbnZhbGlkR1BSUmVnKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1faml0
KTsKKyAgICAgICAgQVNTRVJUKHVzZS51c2VLaW5kKCkgIT0gRG91YmxlVXNlKTsKICAgICAgICAg
aWYgKGppdC0+aXNGaWxsZWQobV9pbmRleCkpCiAgICAgICAgICAgICBncHIoKTsKICAgICB9CkBA
IC0yMzYwLDYgKzIzNzIsNyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB7CiAgICAgICAgIEFTU0VS
VChtX2ppdCk7CisgICAgICAgIEFTU0VSVCh1c2UudXNlS2luZCgpICE9IERvdWJsZVVzZSk7CiAg
ICAgICAgIGlmIChqaXQtPmlzRmlsbGVkKG1faW5kZXgpKQogICAgICAgICAgICAgZ3ByKCk7CiAg
ICAgfQpAQCAtMjQwNCw2ICsyNDE3LDcgQEAgcHVibGljOgogICAgICAgICAsIG1fZ3ByT3JJbnZh
bGlkKEludmFsaWRHUFJSZWcpCiAgICAgewogICAgICAgICBBU1NFUlQobV9qaXQpOworICAgICAg
ICBBU1NFUlQodXNlLnVzZUtpbmQoKSAhPSBEb3VibGVVc2UpOwogICAgICAgICBpZiAoaml0LT5p
c0ZpbGxlZChtX2luZGV4KSkKICAgICAgICAgICAgIGdwcigpOwogICAgIH0KQEAgLTI0NDUsNiAr
MjQ1OSw3IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2Zwck9ySW52YWxpZChJbnZhbGlkRlBSUmVn
KQogICAgIHsKICAgICAgICAgQVNTRVJUKG1faml0KTsKKyAgICAgICAgQVNTRVJUKHVzZS51c2VL
aW5kKCkgPT0gRG91YmxlVXNlKTsKICAgICAgICAgaWYgKGppdC0+aXNGaWxsZWQobV9pbmRleCkp
CiAgICAgICAgICAgICBmcHIoKTsKICAgICB9CkBAIC0yNDgxLDYgKzI0OTYsNyBAQCBwdWJsaWM6
CiAgICAgICAgICwgbV9ncHJPckludmFsaWQoSW52YWxpZEdQUlJlZykKICAgICB7CiAgICAgICAg
IEFTU0VSVChtX2ppdCk7CisgICAgICAgIEFTU0VSVCh1c2UudXNlS2luZCgpICE9IERvdWJsZVVz
ZSk7CiAgICAgICAgIGlmIChqaXQtPmlzRmlsbGVkKG1faW5kZXgpKQogICAgICAgICAgICAgZ3By
KCk7CiAgICAgfQpAQCAtMjUyMiw2ICsyNTM4LDcgQEAgcHVibGljOgogICAgICAgICAsIG1fZ3By
T3JJbnZhbGlkKEludmFsaWRHUFJSZWcpCiAgICAgewogICAgICAgICBBU1NFUlQobV9qaXQpOwor
ICAgICAgICBBU1NFUlQodXNlLnVzZUtpbmQoKSAhPSBEb3VibGVVc2UpOwogICAgICAgICBpZiAo
aml0LT5pc0ZpbGxlZChtX2luZGV4KSkKICAgICAgICAgICAgIGdwcigpOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133657</attachid>
            <date>2012-03-24 15:59:07 -0700</date>
            <delta_ts>2012-03-24 20:02:16 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>inttodouble_patch_2.diff</filename>
            <type>text/plain</type>
            <size>30642</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTEyMDE0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg2IEBA
CisyMDEyLTAzLTI0ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIGludC10by1kb3VibGUgY29udmVyc2lvbiBzaG91bGQgYmUgcmV2ZWFsZWQgdG8gQ1NFCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjEzNQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgV29y
ayBpbiBwcm9ncmVzcyEKKyAgICAgICAgCisgICAgICAgIFRoaXMgaW50cm9kdWNlcyB0aGUgbm90
aW9uIG9mIGFuIEludDMyVG9Eb3VibGUgbm9kZSwgd2hpY2ggaXMgaW5qZWN0ZWQKKyAgICAgICAg
aW50byB0aGUgZ3JhcGggYW55dGltZSB3ZSBrbm93IHRoYXQgd2UgaGF2ZSBhIGRvdWJsZSB1c2Ug
b2YgYSBub2RlIHRoYXQKKyAgICAgICAgd2FzIHByZWRpY3RlZCBpbnRlZ2VyLiBUaGUgSW50MzJU
b0RvdWJsZSBzaW1wbGlmaWVzIGRvdWJsZSBzcGVjdWxhdGlvbgorICAgICAgICBvbiBpbnRlZ2Vy
cyBieSBza2lwcGluZyB0aGUgcGF0aCB0aGF0IHdvdWxkIHVuYm94IGRvdWJsZXMuIEl0IGFsbG93
cworICAgICAgICBpbnRlZ2VyIHRvIGRvdWJsZSBjb252ZXJzaW9ucyB0byBiZSBzdWJqZWN0ZWQg
dG8gY29tbW9uIHN1YmV4cHJlc3Npb24KKyAgICAgICAgZWxpbWluYXRpb24gKENTRSkgYnkgYWxs
b3dpbmcgdGhlIENTRSBwaGFzZSB0byBzZWUgd2hlcmUgdGhlc2UKKyAgICAgICAgY29udmVyc2lv
bnMgYXJlIG9jY3VycmluZy4gRmluYWxseSwgaXQgYWxsb3dzIHVzIHRvIHNlZSB3aGVuIGEgY29u
c3RhbnQKKyAgICAgICAgaXMgYmVpbmcgdXNlZCBhcyBib3RoIGEgZG91YmxlIGFuZCBhbiBpbnRl
Z2VyLiBUaGlzIGlzIGEgYml0IG9kZCwgc2luY2UKKyAgICAgICAgaXQgbWVhbnMgdGhhdCBzb21l
dGltZXMgYSBkb3VibGUgdXNlIG9mIGEgY29uc3RhbnQgd2lsbCBub3QgcmVmZXIKKyAgICAgICAg
ZGlyZWN0bHkgdG8gdGhlIGNvbnN0YW50LiBUaGlzIHNob3VsZCBub3QgY2F1c2UgcHJvYmxlbXMs
IGZvciBub3csIGJ1dAorICAgICAgICBpdCBtYXkgcmVxdWlyZSBzb21lIGNhbm9uaXphbGl6YXRp
b24gaW4gdGhlIGZ1dHVyZSBpZiB3ZSB3YW50IHRvCisgICAgICAgIHN1cHBvcnQgc3RyZW5ndGgg
cmVkdWN0aW9ucyBvZiBkb3VibGUgb3BlcmF0aW9ucyBiYXNlZCBvbiBjb25zdGFudHMuCisgICAg
ICAgIAorICAgICAgICBUbyBhbGxvdyBpbmplY3Rpb24gb2Ygbm9kZXMgaW50byB0aGUgZ3JhcGgs
IHRoaXMgY2hhbmdlIGludHJvZHVjZXMgdGhlCisgICAgICAgIERGRzo6SW5zZXJ0aW9uU2V0LCB3
aGljaCBpcyBhIHdheSBvZiBsYXppbHkgaW5zZXJ0aW5nIGVsZW1lbnRzIGludG8gYQorICAgICAg
ICBsaXN0LiBUaGlzIGFsbG93cyB0aGUgRml4dXBQaGFzZSB0byByZW1haW4gTyhOKSBkZXNwaXRl
IHBlcmZvcm1pbmcKKyAgICAgICAgbXVsdGlwbGUgaW5qZWN0aW9ucyBpbiBhIHNpbmdsZSBiYXNp
YyBibG9jay4gV2l0aG91dCB0aGUgSW5zZXJ0aW9uU2V0LAorICAgICAgICBlYWNoIGluamVjdGlv
biB3b3VsZCByZXF1aXJlIHBlcmZvcm1pbmcgYW4gaW5zZXJ0aW9uIGludG8gYSB2ZWN0b3IsCisg
ICAgICAgIHdoaWNoIGlzIE8oTiksIGxlYWRpbmcgdG8gTyhOXjIpIHBlcmZvcm1hbmNlIG92ZXJh
bGwuIFdpdGggdGhlCisgICAgICAgIEluc2VydGlvblNldCwgZWFjaCBpbmplY3Rpb24gc2ltcGx5
IHJlY29yZHMgd2hhdCBpbnNlcnRpb24gd291bGQgaGF2ZQorICAgICAgICBiZWVuIHBlcmZvcm1l
ZCwgYW5kIGFsbCBpbnNlcnRpb25zIGFyZSBwZXJmb3JtZWQgYXQgb25jZSAodmlhCisgICAgICAg
IEluc2VydGlvblNldDo6ZXhlY3V0ZSkgYWZ0ZXIgcHJvY2Vzc2luZyBvZiBhIGJhc2ljIGJsb2Nr
IGlzIGNvbXBsZXRlZC4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogYnl0ZWNvZGUvUHJlZGljdGVkVHlwZS5oOgorICAgICAg
ICAoSlNDOjppc0FjdGlvbmFibGVJbnRNdXRhYmxlQXJyYXlQcmVkaWN0aW9uKToKKyAgICAgICAg
KEpTQyk6CisgICAgICAgIChKU0M6OmlzQWN0aW9uYWJsZUZsb2F0TXV0YWJsZUFycmF5UHJlZGlj
dGlvbik6CisgICAgICAgIChKU0M6OmlzQWN0aW9uYWJsZVR5cGVkTXV0YWJsZUFycmF5UHJlZGlj
dGlvbik6CisgICAgICAgIChKU0M6OmlzQWN0aW9uYWJsZU11dGFibGVBcnJheVByZWRpY3Rpb24p
OgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpBYnN0cmFjdFN0YXRlOjpleGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHQ1NFUGhhc2UuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkNTRVBoYXNlOjpwZXJmb3JtTm9kZUNTRSk6CisgICAgICAg
ICogZGZnL0RGR0NvbW1vbi5oOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpydW4pOgorICAgICAgICAoSlNDOjpERkc6OkZp
eHVwUGhhc2U6OmZpeHVwQmxvY2spOgorICAgICAgICAoRml4dXBQaGFzZSk6CisgICAgICAgIChK
U0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1
cFBoYXNlOjpmaXhEb3VibGVFZGdlKToKKyAgICAgICAgKiBkZmcvREZHSW5zZXJ0aW9uU2V0Lmg6
IEFkZGVkLgorICAgICAgICAoREZHKToKKyAgICAgICAgKEluc2VydGlvbik6CisgICAgICAgIChK
U0M6OkRGRzo6SW5zZXJ0aW9uOjpJbnNlcnRpb24pOgorICAgICAgICAoSlNDOjpERkc6Okluc2Vy
dGlvbjo6aW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6Okluc2VydGlvbjo6ZWxlbWVudCk6Cisg
ICAgICAgIChJbnNlcnRpb25TZXQpOgorICAgICAgICAoSlNDOjpERkc6Okluc2VydGlvblNldDo6
SW5zZXJ0aW9uU2V0KToKKyAgICAgICAgKEpTQzo6REZHOjpJbnNlcnRpb25TZXQ6OmFwcGVuZCk6
CisgICAgICAgIChKU0M6OkRGRzo6SW5zZXJ0aW9uU2V0OjpleGVjdXRlKToKKyAgICAgICAgKiBk
ZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKERGRyk6CisgICAgICAgICogZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZTo6cHJvcGFnYXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21wdXRlVmFs
dWVSZWNvdmVyeUZvcik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVWYWx1ZVRvSW50MzIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlSW50MzJUb0RvdWJsZSk6CisgICAgICAgIChERkcpOgorICAgICAgICAqIGRmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oOgorICAgICAgICAoU3BlY3VsYXRpdmVKSVQpOgorICAgICAgICAoSlNDOjpE
Rkc6OkludGVnZXJPcGVyYW5kOjpJbnRlZ2VyT3BlcmFuZCk6CisgICAgICAgIChKU0M6OkRGRzo6
RG91YmxlT3BlcmFuZDo6RG91YmxlT3BlcmFuZCk6CisgICAgICAgIChKU0M6OkRGRzo6SlNWYWx1
ZU9wZXJhbmQ6OkpTVmFsdWVPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpTdG9yYWdlT3Bl
cmFuZDo6U3RvcmFnZU9wZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZUludGVn
ZXJPcGVyYW5kOjpTcGVjdWxhdGVJbnRlZ2VyT3BlcmFuZCk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kOjpTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZURvdWJsZU9wZXJhbmQ6OlNwZWN1bGF0ZURv
dWJsZU9wZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZUNlbGxPcGVyYW5kOjpT
cGVjdWxhdGVDZWxsT3BlcmFuZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRlQm9vbGVh
bk9wZXJhbmQ6OlNwZWN1bGF0ZUJvb2xlYW5PcGVyYW5kKToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUpOgorCiAyMDEyLTAzLTI0ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAK
ICAgICAgICAgREZHOjpOb2RlOjpzaG91bGROb3RTcGVjdWxhdGVJbnRlZ2VyKCkgc2hvdWxkIGJl
IGVsaW1pbmF0ZWQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAx
MTIwMTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNzQsNiArNzQsNyBAQAogCQkwRjI0
MkRBNzEzRjNCMUU4MDA3QURENEMgLyogV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyNDJEQTUxM0YzQjFCQjAw
N0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjJCREMxNTE1MUM1RDREMDBDRDg5MTAgLyog
REZHRml4dXBQaGFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjJCREMxMjE1MUM1RDRBMDBDRDg5MTAgLyogREZHRml4dXBQaGFzZS5jcHAgKi87
IH07CiAJCTBGMkJEQzE2MTUxQzVENEYwMENEODkxMCAvKiBERkdGaXh1cFBoYXNlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJCREMxMzE1MUM1RDRB
MDBDRDg5MTAgLyogREZHRml4dXBQaGFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTBGMkJEQzIxMTUxRTgwM0IwMENEODkxMCAvKiBERkdJbnNl
cnRpb25TZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMkJEQzFGMTUxRTgwMzgwMENEODkxMCAvKiBERkdJbnNlcnRpb25TZXQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjJDNTU2RjE0NzM4RjMx
MDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEYyQzU1NkUxNDczOEYyRTAwMTIxRTRGIC8qIERGR0NvZGVCbG9j
a3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RjJDNTU3MDE0NzM4RjM1MDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNTU2RDE0NzM4RjJFMDAxMjFF
NEYgLyogREZHQ29kZUJsb2Nrcy5jcHAgKi87IH07CiAJCTBGNDI2QTQ4MTQ2MENCQjMwMDEzMUY4
RiAvKiBWYWx1ZVJlY292ZXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjQyNkE0NTE0NjBDQkFCMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC03MjQsNiAr
NzI1LDcgQEAKIAkJMEYyNDJEQTUxM0YzQjFCQjAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2
ZXN0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha1JlZmVyZW5jZUhh
cnZlc3Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJCREMxMjE1MUM1RDRB
MDBDRDg5MTAgLyogREZHRml4dXBQaGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBERkdGaXh1cFBoYXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdGaXh1cFBoYXNlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyQkRDMTMxNTFDNUQ0QTAwQ0Q4OTEw
IC8qIERGR0ZpeHVwUGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZH
Rml4dXBQaGFzZS5oOyBwYXRoID0gZGZnL0RGR0ZpeHVwUGhhc2UuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEYyQkRDMUYxNTFFODAzODAwQ0Q4OTEwIC8qIERGR0luc2VydGlvblNl
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdJbnNlcnRpb25TZXQuaDsg
cGF0aCA9IGRmZy9ERkdJbnNlcnRpb25TZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEYyQzU1NkQxNDczOEYyRTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gREZHQ29kZUJsb2Nrcy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkM1NTZFMTQ3MzhGMkUwMDEyMUU0RiAvKiBERkdDb2Rl
QmxvY2tzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERGR0NvZGVCbG9ja3Mu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0MjZBNDUxNDYwQ0JBQjAwMTMxRjhG
IC8qIFZhbHVlUmVjb3ZlcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmFs
dWVSZWNvdmVyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTk5NCw2ICsxOTk2
LDcgQEAKIAkJCQk4NkFFNkM0QzEzNkExMUU0MDA5NjMwMTIgLyogREZHR1BSSW5mby5oICovLAog
CQkJCTg2RUM5REI3MTMyOERGODIwMDJCMkFENyAvKiBERkdHcmFwaC5jcHAgKi8sCiAJCQkJODZF
QzlEQjgxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0dyYXBoLmggKi8sCisJCQkJMEYyQkRDMUYxNTFF
ODAzODAwQ0Q4OTEwIC8qIERGR0luc2VydGlvblNldC5oICovLAogCQkJCTg2RUM5REJCMTMyOERG
ODIwMDJCMkFENyAvKiBERkdKSVRDb21waWxlci5jcHAgKi8sCiAJCQkJODZFQzlEQkMxMzI4REY4
MjAwMkIyQUQ3IC8qIERGR0pJVENvbXBpbGVyLmggKi8sCiAJCQkJODZFQ0EzRTkxMzJERUYxQzAw
MkIyQUQ3IC8qIERGR05vZGUuaCAqLywKQEAgLTI1MDEsNiArMjUwNCw3IEBACiAJCQkJMEZBNTgx
QkIxNTBFOTUzMDAwQjlBMkQ5IC8qIERGR05vZGVGbGFncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZBNTgxQkMxNTBFOTUzMDAwQjlBMkQ5IC8qIERGR05vZGVUeXBlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjJCREMxNjE1MUM1RDRGMDBDRDg5MTAgLyogREZHRml4dXBQaGFzZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEYyQkRDMjExNTFFODAzQjAwQ0Q4OTEwIC8qIERGR0luc2VydGlvblNldC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJl
ZGljdGVkVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9QcmVkaWN0ZWRUeXBlLmgJKHJldmlzaW9uIDExMjAxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QcmVkaWN0ZWRUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1OSwxMCAr
MTU5LDkgQEAgaW5saW5lIGJvb2wgaXNGbG9hdDY0QXJyYXlQcmVkaWN0aW9uKFByZQogICAgIHJl
dHVybiB2YWx1ZSA9PSBQcmVkaWN0RmxvYXQ2NEFycmF5OwogfQogCi1pbmxpbmUgYm9vbCBpc0Fj
dGlvbmFibGVNdXRhYmxlQXJyYXlQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCitpbmxp
bmUgYm9vbCBpc0FjdGlvbmFibGVJbnRNdXRhYmxlQXJyYXlQcmVkaWN0aW9uKFByZWRpY3RlZFR5
cGUgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIGlzQXJyYXlQcmVkaWN0aW9uKHZhbHVlKQotICAgICAg
ICB8fCBpc0J5dGVBcnJheVByZWRpY3Rpb24odmFsdWUpCisgICAgcmV0dXJuIGlzQnl0ZUFycmF5
UHJlZGljdGlvbih2YWx1ZSkKICNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQogICAgICAgICB8
fCBpc0ludDhBcnJheVByZWRpY3Rpb24odmFsdWUpCiAgICAgICAgIHx8IGlzSW50MTZBcnJheVBy
ZWRpY3Rpb24odmFsdWUpCkBAIC0xNzEsMTMgKzE3MCwzMCBAQCBpbmxpbmUgYm9vbCBpc0FjdGlv
bmFibGVNdXRhYmxlQXJyYXlQcmVkCiAgICAgICAgIHx8IGlzVWludDhBcnJheVByZWRpY3Rpb24o
dmFsdWUpCiAgICAgICAgIHx8IGlzVWludDhDbGFtcGVkQXJyYXlQcmVkaWN0aW9uKHZhbHVlKQog
ICAgICAgICB8fCBpc1VpbnQxNkFycmF5UHJlZGljdGlvbih2YWx1ZSkKLSAgICAgICAgfHwgaXNV
aW50MzJBcnJheVByZWRpY3Rpb24odmFsdWUpCisgICAgICAgIHx8IGlzVWludDMyQXJyYXlQcmVk
aWN0aW9uKHZhbHVlKTsKK30KKworaW5saW5lIGJvb2wgaXNBY3Rpb25hYmxlRmxvYXRNdXRhYmxl
QXJyYXlQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCit7CisgICAgcmV0dXJuIGZhbHNl
CiAjaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKICAgICAgICAgfHwgaXNGbG9hdDMyQXJyYXlQ
cmVkaWN0aW9uKHZhbHVlKQogI2VuZGlmCiAgICAgICAgIHx8IGlzRmxvYXQ2NEFycmF5UHJlZGlj
dGlvbih2YWx1ZSk7CiB9CiAKK2lubGluZSBib29sIGlzQWN0aW9uYWJsZVR5cGVkTXV0YWJsZUFy
cmF5UHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVlKQoreworICAgIHJldHVybiBpc0FjdGlv
bmFibGVJbnRNdXRhYmxlQXJyYXlQcmVkaWN0aW9uKHZhbHVlKQorICAgICAgICB8fCBpc0FjdGlv
bmFibGVGbG9hdE11dGFibGVBcnJheVByZWRpY3Rpb24odmFsdWUpCit9CisKK2lubGluZSBib29s
IGlzQWN0aW9uYWJsZU11dGFibGVBcnJheVByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1ZSkK
K3sKKyAgICByZXR1cm4gaXNBcnJheVByZWRpY3Rpb24odmFsdWUpCisgICAgICAgIHx8IGlzQWN0
aW9uYWJsZVR5cGVkTXV0YWJsZUFycmF5UHJlZGljdGlvbih2YWx1ZSkKK30KKwogaW5saW5lIGJv
b2wgaXNBY3Rpb25hYmxlQXJyYXlQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCiB7CiAg
ICAgcmV0dXJuIGlzU3RyaW5nUHJlZGljdGlvbih2YWx1ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAkocmV2aXNpb24gMTEyMDEzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzAwLDYgKzMwMCwxMSBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUo
dW5zaWduZWQgaW5kCiAgICAgICAgIAogICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFBy
ZWRpY3RJbnQzMik7CiAgICAgICAgIGJyZWFrOworICAgICAgICAKKyAgICBjYXNlIEludDMyVG9E
b3VibGU6CisgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRpY3RJbnQz
Mik7CisgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoUHJlZGljdERvdWJsZSk7CisgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgY2FzZSBWYWx1ZUFkZDoKICAgICBjYXNlIEFy
aXRoQWRkOiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNw
cAkocmV2aXNpb24gMTEyMDEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQ
aGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4Nyw2ICs1ODcsNyBAQCBwcml2YXRlOgogICAg
ICAgICBjYXNlIEdldFN0cmluZ0xlbmd0aDoKICAgICAgICAgY2FzZSBTdHJpbmdDaGFyQXQ6CiAg
ICAgICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDoKKyAgICAgICAgY2FzZSBJbnQzMlRvRG91Ymxl
OgogICAgICAgICAgICAgc2V0UmVwbGFjZW1lbnQocHVyZUNTRShub2RlKSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDb21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nv
bW1vbi5oCShyZXZpc2lvbiAxMTIwMTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw5ICszNyw5IEBACiAjZGVmaW5lIERGR19F
TkFCTEUoREZHX0ZFQVRVUkUpIChkZWZpbmVkIERGR19FTkFCTEVfIyNERkdfRkVBVFVSRSAmJiBE
RkdfRU5BQkxFXyMjREZHX0ZFQVRVUkUpCiAKIC8vIEVtaXQgdmFyaW91cyBsb2dnaW5nIGluZm9y
bWF0aW9uIGZvciBkZWJ1Z2dpbmcsIGluY2x1ZGluZyBkdW1waW5nIHRoZSBkYXRhZmxvdyBncmFw
aHMuCi0jZGVmaW5lIERGR19FTkFCTEVfREVCVUdfVkVSQk9TRSAwCisjZGVmaW5lIERGR19FTkFC
TEVfREVCVUdfVkVSQk9TRSAxCiAvLyBFbWl0IGR1bXBzIGR1cmluZyBwcm9wYWdhdGlvbiwgaW4g
YWRkaXRpb24gdG8ganVzdCBhZnRlci4KLSNkZWZpbmUgREZHX0VOQUJMRV9ERUJVR19QUk9QQUdB
VElPTl9WRVJCT1NFIDAKKyNkZWZpbmUgREZHX0VOQUJMRV9ERUJVR19QUk9QQUdBVElPTl9WRVJC
T1NFIDEKIC8vIEVtaXQgbG9nZ2luZyBmb3IgT1NSIGV4aXQgdmFsdWUgcmVjb3ZlcmllcyBhdCBl
dmVyeSBub2RlLCBub3QganVzdCBub2RlcyB0aGF0CiAvLyBhY3R1YWxseSBoYXMgc3BlY3VsYXRp
b24gY2hlY2tzLgogI2RlZmluZSBERkdfRU5BQkxFX1ZFUkJPU0VfVkFMVUVfUkVDT1ZFUklFUyAw
CkBAIC02Miw3ICs2Miw3IEBACiAvLyBFbWl0IGEgYnJlYWtwb2ludCBpbnRvIHRoZSBzcGVjdWxh
dGlvbiBmYWlsdXJlIGNvZGUuCiAjZGVmaW5lIERGR19FTkFCTEVfSklUX0JSRUFLX09OX1NQRUNV
TEFUSU9OX0ZBSUxVUkUgMAogLy8gTG9nIGV2ZXJ5IHNwZWN1bGF0aW9uIGZhaWx1cmUuCi0jZGVm
aW5lIERGR19FTkFCTEVfVkVSQk9TRV9TUEVDVUxBVElPTl9GQUlMVVJFIDAKKyNkZWZpbmUgREZH
X0VOQUJMRV9WRVJCT1NFX1NQRUNVTEFUSU9OX0ZBSUxVUkUgMQogLy8gRGlzYWJsZSB0aGUgREZH
IEpJVCB3aXRob3V0IGhhdmluZyB0byB0b3VjaCBQbGF0Zm9ybS5oCiAjZGVmaW5lIERGR19ERUJV
R19MT0NBTF9ESVNCQUxFIDAKIC8vIEVuYWJsZSBPU1IgZW50cnkgZnJvbSBiYXNlbGluZSBKSVQu
CkBAIC05Nyw2ICs5Nyw3IEBAIHN0cnVjdCBOb2RlSW5kZXhUcmFpdHMgewogCiBlbnVtIFVzZUtp
bmQgewogICAgIFVudHlwZWRVc2UsCisgICAgRG91YmxlVXNlLAogICAgIExhc3RVc2VLaW5kIC8v
IE11c3QgYWx3YXlzIGJlIHRoZSBsYXN0IGVudHJ5IGluIHRoZSBlbnVtLCBhcyBpdCBpcyB1c2Vk
IHRvIGRlbm90ZSB0aGUgbnVtYmVyIG9mIGVudW0gZWxlbWVudHMuCiB9OwogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDExMjAx
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAogI2luY2x1
ZGUgIkRGR0dyYXBoLmgiCisjaW5jbHVkZSAiREZHSW5zZXJ0aW9uU2V0LmgiCiAjaW5jbHVkZSAi
REZHUGhhc2UuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewpAQCAtNDIsMTEg
KzQzLDIwIEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIHJ1bigpCiAgICAgewotICAgICAgICBm
b3IgKG1fY29tcGlsZUluZGV4ID0gMDsgbV9jb21waWxlSW5kZXggPCBtX2dyYXBoLnNpemUoKTsg
KyttX2NvbXBpbGVJbmRleCkKLSAgICAgICAgICAgIGZpeHVwTm9kZShtX2dyYXBoW21fY29tcGls
ZUluZGV4XSk7CisgICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gMDsgYmxvY2tJ
bmRleCA8IG1fZ3JhcGgubV9ibG9ja3Muc2l6ZSgpOyArK2Jsb2NrSW5kZXgpCisgICAgICAgICAg
ICBmaXh1cEJsb2NrKG1fZ3JhcGgubV9ibG9ja3NbYmxvY2tJbmRleF0uZ2V0KCkpOwogICAgIH0K
IAogcHJpdmF0ZToKKyAgICB2b2lkIGZpeHVwQmxvY2soQmFzaWNCbG9jayogYmxvY2spCisgICAg
eworICAgICAgICBmb3IgKG1faW5kZXhJbkJsb2NrID0gMDsgbV9pbmRleEluQmxvY2sgPCBibG9j
ay0+c2l6ZSgpOyArK21faW5kZXhJbkJsb2NrKSB7CisgICAgICAgICAgICBtX2NvbXBpbGVJbmRl
eCA9IGJsb2NrLT5hdChtX2luZGV4SW5CbG9jayk7CisgICAgICAgICAgICBmaXh1cE5vZGUobV9n
cmFwaFttX2NvbXBpbGVJbmRleF0pOworICAgICAgICB9CisgICAgICAgIG1faW5zZXJ0aW9uU2V0
LmV4ZWN1dGUoKmJsb2NrKTsKKyAgICB9CisgICAgCiAgICAgdm9pZCBmaXh1cE5vZGUoTm9kZSYg
bm9kZSkKICAgICB7CiAgICAgICAgIGlmICghbm9kZS5zaG91bGRHZW5lcmF0ZSgpKQpAQCAtMTUy
LDYgKzE2MiwxMjEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgICAgICAKKyAgICAgICAgY2FzZSBDb21wYXJlRXE6CisgICAgICAgIGNhc2UgQ29tcGFy
ZUxlc3M6CisgICAgICAgIGNhc2UgQ29tcGFyZUxlc3NFcToKKyAgICAgICAgY2FzZSBDb21wYXJl
R3JlYXRlcjoKKyAgICAgICAgY2FzZSBDb21wYXJlR3JlYXRlRXE6CisgICAgICAgIGNhc2UgQ29t
cGFyZVN0cmljdEVxOiB7CisgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlSW50
ZWdlcihtX2dyYXBoW25vZGUuY2hpbGQxKCldLCBtX2dyYXBoW25vZGUuY2hpbGQyKCldKSkKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGlmICghTm9kZTo6c2hvdWxkU3BlY3Vs
YXRlTnVtYmVyKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0sIG1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0p
KQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZml4RG91YmxlRWRnZShub2Rl
LmNoaWxkcmVuLmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZpeERvdWJsZUVkZ2Uobm9kZS5jaGls
ZHJlbi5jaGlsZDIoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAg
ICAgCisgICAgICAgIGNhc2UgTG9naWNhbE5vdDogeworICAgICAgICAgICAgaWYgKG1fZ3JhcGhb
bm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlSW50ZWdlcigpKQorICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgaWYgKCFtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNw
ZWN1bGF0ZU51bWJlcigpKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZml4
RG91YmxlRWRnZShub2RlLmNoaWxkcmVuLmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBCcmFuY2g6IHsKKyAgICAgICAg
ICAgIGlmIChtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZUludGVnZXIoKSkK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGlmICghbV9ncmFwaFtub2RlLmNo
aWxkMSgpXS5zaGlvdWxkU3BlY3VsYXRlTnVtYmVyKCkpCisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBmaXhEb3VibGVFZGdlKG5vZGUuY2hpbGRyZW4uY2hpbGQxKCkpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIFNl
dExvY2FsOiB7CisgICAgICAgICAgICBpZiAobV9ncmFwaC5pc0NhcHR1cmVkKG5vZGUubG9jYWwo
KSkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAoIW5vZGUudmFyaWFi
bGVBY2Nlc3NEYXRhKCktPnNob3VsZFVzZURvdWJsZUZvcm1hdCgpKQorICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgZml4RG91YmxlRWRnZShub2RlLmNoaWxkcmVuLmNoaWxkMSgp
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAg
Y2FzZSBBcml0aEFkZDoKKyAgICAgICAgY2FzZSBWYWx1ZUFkZDogeworICAgICAgICAgICAgaWYg
KG1fZ3JhcGguYWRkU2hvdWxkU3BlY3VsYXRlSW50ZWdlcihub2RlKSkKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGlmICghTm9kZTo6c2hvdWxkU3BlY3VsYXRlTnVtYmVyKG1f
Z3JhcGhbbm9kZS5jaGlsZDEoKV0sIG1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0pKQorICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgZml4RG91YmxlRWRnZShub2RlLmNoaWxkcmVuLmNo
aWxkMSgpKTsKKyAgICAgICAgICAgIGZpeERvdWJsZUVkZ2Uobm9kZS5jaGlsZHJlbi5jaGlsZDEo
KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAg
IGNhc2UgQXJpdGhTdWI6IHsKKyAgICAgICAgICAgIGlmIChtX2dyYXBoLmFkZFNob3VsZFNwZWN1
bGF0ZUludGVnZXIobm9kZSkKKyAgICAgICAgICAgICAgICAmJiBub2RlLmNhblNwZWN1bGF0ZUlu
dGVnZXIoKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGZpeERvdWJsZUVk
Z2Uobm9kZS5jaGlsZHJlbi5jaGlsZDEoKSk7CisgICAgICAgICAgICBmaXhEb3VibGVFZGdlKG5v
ZGUuY2hpbGRyZW4uY2hpbGQxKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICAgICAgICAgIAorICAgICAgICBjYXNlIEFyaXRoTmVnYXRlOiB7CisgICAgICAgICAgICBpZiAo
bV9ncmFwaC5uZWdhdGVTaG91bGRTcGVjdWxhdGVJbnRlZ2VyKG5vZGUpKQorICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgZml4RG91YmxlRWRnZShub2RlLmNoaWxkcmVuLmNoaWxk
MSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAg
ICAgY2FzZSBBcml0aE1pbjoKKyAgICAgICAgY2FzZSBBcml0aE1heDoKKyAgICAgICAgY2FzZSBB
cml0aE11bDoKKyAgICAgICAgY2FzZSBBcml0aERpdjoKKyAgICAgICAgY2FzZSBBcml0aE1vZDog
eworICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUludGVnZXIobV9ncmFwaFtu
b2RlLmNoaWxkMSgpXSwgbV9ncmFwaFtub2RlLmNoaWxkMigpXSkKKyAgICAgICAgICAgICAgICAm
JiBub2RlLmNhblNwZWN1bGF0ZUludGVnZXIoKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIGZpeERvdWJsZUVkZ2Uobm9kZS5jaGlsZHJlbi5jaGlsZDEoKSk7CisgICAgICAg
ICAgICBmaXhEb3VibGVFZGdlKG5vZGUuY2hpbGRyZW4uY2hpbGQxKCkpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEFyaXRoQWJzOiB7
CisgICAgICAgICAgICBpZiAobV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVjdWxhdGVJ
bnRlZ2VyKCkKKyAgICAgICAgICAgICAgICAmJiBub2RlLmNhblNwZWN1bGF0ZUludGVnZXIoKSkK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGZpeERvdWJsZUVkZ2Uobm9kZS5j
aGlsZHJlbi5jaGlsZDEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAg
ICAgICAgCisgICAgICAgIGNhc2UgQXJpdGhTcXJ0OiB7CisgICAgICAgICAgICBmaXhEb3VibGVF
ZGdlKG5vZGUuY2hpbGRyZW4uY2hpbGQxKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIFB1dEJ5VmFsOiB7CisgICAgICAgICAgICBp
ZiAoIW1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ucHJlZGljdGlvbigpIHx8ICFtX2dyYXBoW25vZGUu
Y2hpbGQyKCldLnByZWRpY3Rpb24oKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGlmICghbV9ncmFwaFtub2RlLmNoaWxkMigpXS5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyKCkp
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAoaXNBY3Rpb25hYmxlSW50
TXV0YWJsZUFycmF5UHJlZGljdGlvbihtX2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24o
KSkpIHsKKyAgICAgICAgICAgICAgICBpZiAobV9ncmFwaFtub2RlLmNoaWxkMygpXS5pc0NvbnN0
YW50KCkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGlmICht
X2dyYXBoW25vZGUuY2hpbGQzKCldLnNob3VsZFNwZWN1bGF0ZUludGVnZXIoKSkKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZml4RG91YmxlRWRnZShub2RlLmNo
aWxkcmVuLmNoaWxkMygpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGlmIChpc0FjdGlvbmFibGVGbG9hdE11dGFibGVBcnJheVByZWRpY3Rpb24o
bV9ncmFwaFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9uKCkpKSB7CisgICAgICAgICAgICAgICAg
Zml4RG91YmxlRWRnZShub2RlLmNoaWxkcmVuLmNoaWxkMygpKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
ICAgICAgICAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CkBAIC0xNzksNyArMzA0LDI3IEBAIHByaXZhdGU6CiAgICAgICAgIGVkZ2UgPSBuZXdFZGdlOwog
ICAgIH0KICAgICAKKyAgICB2b2lkIGZpeERvdWJsZUVkZ2UoTm9kZSYgc291cmNlLCBFZGdlJiBl
ZGdlKQorICAgIHsKKyAgICAgICAgaWYgKCFtX2dyYXBoW2VkZ2VdLnNob3VsZFNwZWN1bGF0ZUlu
dGVnZXIoKSkgeworICAgICAgICAgICAgZWRnZS5zZXRVc2VLaW5kKERvdWJsZVVzZSk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIE5vZGVJbmRleCBy
ZXN1bHRJbmRleCA9IChOb2RlSW5kZXgpbV9ncmFwaC5zaXplKCk7CisgICAgICAgIG1fZ3JhcGgu
YXBwZW5kKE5vZGUoSW50MzJUb0RvdWJsZSwgc291cmNlLmNvZGVPcmlnaW4sIGVkZ2UuaW5kZXgo
KSkpOworICAgICAgICBtX2luc2VydGlvblNldC5hcHBlbmQobV9pbmRleEluQmxvY2ssIHJlc3Vs
dEluZGV4KTsKKyAgICAgICAgCisgICAgICAgIE5vZGUmIGludDMyVG9Eb3VibGUgPSBtX2dyYXBo
W3Jlc3VsdEluZGV4XTsKKyAgICAgICAgaW50MzJUb0RvdWJsZS5wcmVkaWN0KFByZWRpY3REb3Vi
bGUpOworICAgICAgICBpbnQzMlRvRG91YmxlLnJlZigpOworICAgICAgICAKKyAgICAgICAgZWRn
ZSA9IEVkZ2UocmVzdWx0SW5kZXgsIERvdWJsZVVzZSk7CisgICAgfQorICAgIAorICAgIHVuc2ln
bmVkIG1faW5kZXhJbkJsb2NrOwogICAgIE5vZGVJbmRleCBtX2NvbXBpbGVJbmRleDsKKyAgICBJ
bnNlcnRpb25TZXQ8Tm9kZUluZGV4PiBtX2luc2VydGlvblNldDsKIH07CiAgICAgCiB2b2lkIHBl
cmZvcm1GaXh1cChHcmFwaCYgZ3JhcGgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0luc2VydGlvblNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSW5zZXJ0aW9uU2V0LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0luc2VydGlvblNldC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDk2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgREZH
SW5zZXJ0aW9uU2V0X2gKKyNkZWZpbmUgREZHSW5zZWN0aW9uU2V0X2gKKworI2luY2x1ZGUgPHd0
Zi9QbGF0Zm9ybS5oPgorCisjaWYgRU5BQkxFKERGR19KSVQpCisKKyNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKwordGVtcGxhdGU8dHlw
ZW5hbWUgRWxlbWVudFR5cGU+CitjbGFzcyBJbnNlcnRpb24geworcHVibGljOgorICAgIEluc2Vy
dGlvbihzaXplX3QgaW5kZXgsIGNvbnN0IEVsZW1lbnRUeXBlJiBlbGVtZW50KQorICAgICAgICA6
IG1faW5kZXgoaW5kZXgpCisgICAgICAgICwgbV9lbGVtZW50KGVsZW1lbnQpCisgICAgeworICAg
IH0KKyAgICAKKyAgICBzaXplX3QgaW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2luZGV4OyB9Cisg
ICAgY29uc3QgRWxlbWVudFR5cGUmIGVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnQ7
IH0KK3ByaXZhdGU6CisgICAgc2l6ZV90IG1faW5kZXg7CisgICAgRWxlbWVudFR5cGUgbV9lbGVt
ZW50OworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5cGU+CitjbGFzcyBJbnNlcnRp
b25TZXQgeworcHVibGljOgorICAgIEluc2VydGlvblNldCgpIHsgfQorICAgIAorICAgIHZvaWQg
YXBwZW5kKGNvbnN0IEluc2VydGlvbjxFbGVtZW50VHlwZT4mIGluc2VydGlvbikKKyAgICB7Cisg
ICAgICAgIEFTU0VSVCghbV9pbnNlcnRpb25zLnNpemUoKSB8fCBtX2luc2VydGlvbnMubGFzdCgp
LmluZGV4KCkgPD0gaW5zZXJ0aW9uLmluZGV4KCkpOworICAgICAgICBtX2luc2VydGlvbnMuYXBw
ZW5kKGluc2VydGlvbik7CisgICAgfQorICAgIAorICAgIHZvaWQgYXBwZW5kKHNpemVfdCBpbmRl
eCwgY29uc3QgRWxlbWVudFR5cGUmIGVsZW1lbnQpCisgICAgeworICAgICAgICBhcHBlbmQoSW5z
ZXJ0aW9uPEVsZW1lbnRUeXBlPihpbmRleCwgZWxlbWVudCkpOworICAgIH0KKyAgICAKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDb2xsZWN0aW9uVHlwZT4KKyAgICB2b2lkIGV4ZWN1dGUoQ29sbGVj
dGlvblR5cGUmIGNvbGxlY3Rpb24pCisgICAgeworICAgICAgICBpZiAoIW1faW5zZXJ0aW9ucy5z
aXplKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNvbGxlY3Rpb24uZ3Jvdyhjb2xs
ZWN0aW9uLnNpemUoKSArIG1faW5zZXJ0aW9ucy5zaXplKCkpOworICAgICAgICBzaXplX3QgbGFz
dEluZGV4ID0gY29sbGVjdGlvbi5zaXplKCk7CisgICAgICAgIGZvciAoc2l6ZV90IGluZGV4SW5J
bnNlcnRpb25zID0gbV9pbnNlcnRpb25zLnNpemUoKTsgaW5kZXhJbkluc2VydGlvbnMtLTspIHsK
KyAgICAgICAgICAgIEluc2VydGlvbjxFbGVtZW50VHlwZT4mIGluc2VydGlvbiA9IG1faW5zZXJ0
aW9uc1tpbmRleEluSW5zZXJ0aW9uc107CisgICAgICAgICAgICBzaXplX3QgZmlyc3RJbmRleCA9
IGluc2VydGlvbi5pbmRleCgpICsgaW5kZXhJbkluc2VydGlvbnM7CisgICAgICAgICAgICBzaXpl
X3QgaW5kZXhPZmZzZXQgPSBpbmRleEluSW5zZXJ0aW9ucyArIDE7CisgICAgICAgICAgICBmb3Ig
KHNpemVfdCBpID0gbGFzdEluZGV4OyBpLS0gPiBmaXJzdEluZGV4OykKKyAgICAgICAgICAgICAg
ICBjb2xsZWN0aW9uW2ldID0gY29sbGVjdGlvbltpIC0gaW5kZXhPZmZzZXRdOworICAgICAgICAg
ICAgY29sbGVjdGlvbltmaXJzdEluZGV4XSA9IGluc2VydGlvbi5lbGVtZW50KCk7CisgICAgICAg
ICAgICBsYXN0SW5kZXggPSBmaXJzdEluZGV4OworICAgICAgICB9CisgICAgICAgIG1faW5zZXJ0
aW9ucy5yZXNpemUoMCk7CisgICAgfQorcHJpdmF0ZToKKyAgICBWZWN0b3I8SW5zZXJ0aW9uPEVs
ZW1lbnRUeXBlPiwgOD4gbV9pbnNlcnRpb25zOworfTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkRGRworCisjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCisKKyNlbmRpZiAvLyBERkdJbnNlcnRp
b25TZXRfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCShy
ZXZpc2lvbiAxMTIwMTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTc1LDYgKzc1LDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBERkcgewogICAgIG1hY3JvKFZhbHVlVG9JbnQzMiwgTm9kZVJlc3VsdEludDMyIHwgTm9k
ZU11c3RHZW5lcmF0ZSkgXAogICAgIC8qIFVzZWQgdG8gYm94IHRoZSByZXN1bHQgb2YgVVJTaGlm
dCBub2RlcyAocmVzdWx0IGhhcyByYW5nZSAwLi4yXjMyLTEpLiAqL1wKICAgICBtYWNybyhVSW50
MzJUb051bWJlciwgTm9kZVJlc3VsdE51bWJlcikgXAorICAgIC8qIFVzZWQgdG8gY2FzdCBrbm93
biBpbnRlZ2VycyB0byBkb3VibGVzLCBzbyBhcyB0byBzZXBhcmF0ZSB0aGUgZG91YmxlIGZvcm0g
Ki9cCisgICAgLyogb2YgdGhlIHZhbHVlIGZyb20gdGhlIGludGVnZXIgZm9ybS4gKi9cCisgICAg
bWFjcm8oSW50MzJUb0RvdWJsZSwgTm9kZVJlc3VsdE51bWJlcikgXAogICAgIFwKICAgICAvKiBO
b2RlcyBmb3IgYXJpdGhtZXRpYyBvcGVyYXRpb25zLiAqL1wKICAgICBtYWNybyhBcml0aEFkZCwg
Tm9kZVJlc3VsdE51bWJlcikgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9u
IDExMjAxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTIsNyArNTUyLDggQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBHZXRVaW50MzJBcnJheUxlbmd0aDoKICAgICAgICAgY2FzZSBHZXRG
bG9hdDMyQXJyYXlMZW5ndGg6CiAgICAgICAgIGNhc2UgR2V0RmxvYXQ2NEFycmF5TGVuZ3RoOgot
ICAgICAgICBjYXNlIEdldFN0cmluZ0xlbmd0aDogeworICAgICAgICBjYXNlIEdldFN0cmluZ0xl
bmd0aDoKKyAgICAgICAgY2FzZSBJbnQzMlRvRG91YmxlOiB7CiAgICAgICAgICAgICAvLyBUaGlz
IG5vZGUgc2hvdWxkIG5ldmVyIGJlIHZpc2libGUgYXQgdGhpcyBzdGFnZSBvZiBjb21waWxhdGlv
bi4gSXQgaXMKICAgICAgICAgICAgIC8vIGluc2VydGVkIGJ5IGZpeHVwKCksIHdoaWNoIGZvbGxv
d3MgdGhpcyBwaGFzZS4KICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
CShyZXZpc2lvbiAxMTIwMTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTY1LDYgKzE5NjUsMTEgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBjb21waWxlVmFs
dWVUb0ludDMyKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CisgICAgICAgIAorICAgIGNh
c2UgSW50MzJUb0RvdWJsZTogeworICAgICAgICBjb21waWxlSW50MzJUb0RvdWJsZShub2RlKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQogCiAgICAgY2FzZSBWYWx1ZUFkZDoKICAgICBjYXNlIEFy
aXRoQWRkOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAJKHJldmlzaW9uIDExMjAxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjg0LDYgKzEyODQs
MTAgQEAgVmFsdWVSZWNvdmVyeSBTcGVjdWxhdGl2ZUpJVDo6Y29tcHV0ZVZhbAogICAgICAgICAg
ICAgLy8gVHJ5IHRvIHNlZSBpZiB0aGVyZSBpcyBhbiBhbHRlcm5hdGUgbm9kZSB0aGF0IHdvdWxk
IGNvbnRhaW4gdGhlIHZhbHVlIHdlIHdhbnQuCiAgICAgICAgICAgICAvLyBUaGVyZSBhcmUgZm91
ciBwb3NzaWJpbGl0aWVzOgogICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIEludDMyVG9E
b3VibGU6IFdlIGNhbiB1c2UgdGhpcyBpbiBwbGFjZSBvZiB0aGUgb3JpZ2luYWwgbm9kZSwgYnV0
CisgICAgICAgICAgICAvLyAgICB3ZSdkIHJhdGhlciBub3Q7IHNvIHdlIHVzZSBpdCBvbmx5IGlm
IGl0IGlzIHRoZSBvbmx5IHJlbWFpbmluZworICAgICAgICAgICAgLy8gICAgbGl2ZSB2ZXJzaW9u
LgorICAgICAgICAgICAgLy8KICAgICAgICAgICAgIC8vIFZhbHVlVG9JbnQzMjogSWYgdGhlIG9u
bHkgcmVtYWluaW5nIGxpdmUgdmVyc2lvbiBvZiB0aGUgdmFsdWUgaXMKICAgICAgICAgICAgIC8v
ICAgIFZhbHVlVG9JbnQzMiwgdGhlbiB3ZSBjYW4gdXNlIGl0LgogICAgICAgICAgICAgLy8KQEAg
LTEzMDYsNiArMTMxMCw3IEBAIFZhbHVlUmVjb3ZlcnkgU3BlY3VsYXRpdmVKSVQ6OmNvbXB1dGVW
YWwKICAgICAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgICAgICBpZiAoIWZvdW5kKSB7Cisg
ICAgICAgICAgICAgICAgTm9kZUluZGV4IGludDMyVG9Eb3VibGVJbmRleCA9IE5vTm9kZTsKICAg
ICAgICAgICAgICAgICBOb2RlSW5kZXggdmFsdWVUb0ludDMySW5kZXggPSBOb05vZGU7CiAgICAg
ICAgICAgICAgICAgTm9kZUluZGV4IHVpbnQzMlRvTnVtYmVySW5kZXggPSBOb05vZGU7CiAgICAg
ICAgICAgICAKQEAgLTEzMTksNiArMTMyNCw5IEBAIFZhbHVlUmVjb3ZlcnkgU3BlY3VsYXRpdmVK
SVQ6OmNvbXB1dGVWYWwKICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUuY2hpbGQxVW5jaGVj
a2VkKCkgIT0gdmFsdWVTb3VyY2Uubm9kZUluZGV4KCkpCiAgICAgICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLm9wKCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgY2FzZSBJbnQzMlRvRG91YmxlOgorICAgICAgICAgICAgICAgICAg
ICAgICAgaW50MzJUb0RvdWJsZUluZGV4ID0gaW5mby5ub2RlSW5kZXgoKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBjYXNlIFZhbHVlVG9JbnQz
MjoKICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlVG9JbnQzMkluZGV4ID0gaW5mby5ub2Rl
SW5kZXgoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTMzMSw3ICsxMzM5
LDkgQEAgVmFsdWVSZWNvdmVyeSBTcGVjdWxhdGl2ZUpJVDo6Y29tcHV0ZVZhbAogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIE5vZGVJbmRleCBub2RlSW5k
ZXhUb1VzZTsKLSAgICAgICAgICAgICAgICBpZiAodmFsdWVUb0ludDMySW5kZXggIT0gTm9Ob2Rl
KQorICAgICAgICAgICAgICAgIGlmIChpbnQzMlRvRG91YmxlSW5kZXggIT0gTm9Ob2RlKQorICAg
ICAgICAgICAgICAgICAgICBub2RlSW5kZXhUb1VzZSA9IGludDMyVG9Eb3VibGVJbmRleDsKKyAg
ICAgICAgICAgICAgICBlbHNlIGlmICh2YWx1ZVRvSW50MzJJbmRleCAhPSBOb05vZGUpCiAgICAg
ICAgICAgICAgICAgICAgIG5vZGVJbmRleFRvVXNlID0gdmFsdWVUb0ludDMySW5kZXg7CiAgICAg
ICAgICAgICAgICAgZWxzZSBpZiAodWludDMyVG9OdW1iZXJJbmRleCAhPSBOb05vZGUpCiAgICAg
ICAgICAgICAgICAgICAgIG5vZGVJbmRleFRvVXNlID0gdWludDMyVG9OdW1iZXJJbmRleDsKQEAg
LTE1MzcsNyArMTU0Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZVRvSW50
MzIKICAgICAgICAgfQogICAgICAgICBjYXNlIEdlbmVyYXRlZE9wZXJhbmREb3VibGU6IHsKICAg
ICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7Ci0gICAgICAgICAgICBTcGVjdWxh
dGVEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICAgICAgICAgIERv
dWJsZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICAgICAgRlBSUmVn
IGZwciA9IG9wMS5mcHIoKTsKICAgICAgICAgICAgIEdQUlJlZyBncHIgPSByZXN1bHQuZ3ByKCk7
CiAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCB0cnVuY2F0ZWRUb0ludGVnZXIgPSBtX2pp
dC5icmFuY2hUcnVuY2F0ZURvdWJsZVRvSW50MzIoZnByLCBncHIsIEpJVENvbXBpbGVyOjpCcmFu
Y2hJZlRydW5jYXRlU3VjY2Vzc2Z1bCk7CkBAIC0xNjc0LDYgKzE2ODQsMjggQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVVJbnQzMlRvTnVtYgogICAgIGludGVnZXJSZXN1bHQocmVzdWx0
LmdwcigpLCBtX2NvbXBpbGVJbmRleCwgb3AxLmZvcm1hdCgpKTsKIH0KIAordm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUludDMyVG9Eb3VibGUoTm9kZSYgbm9kZSkKK3sKKyAgICBpZiAoYXQo
bm9kZS5jaGlsZDEoKSkuaGFzQ29uc3RhbnQoKSkgeworICAgICAgICBBU1NFUlQoaXNJbnQzMkNv
bnN0YW50KG5vZGUuY2hpbGQxKCkpKTsKKyAgICAgICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlz
KTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsK
KyAgICAgICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6SW1tUHRyKHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KHJlaW50ZXJwcmV0RG91YmxlVG9JbnRwdHIodmFsdWVPZk51bWJlckNvbnN0YW50
KG5vZGVJbmRleCkpKSksIHRlbXAuZ3ByKCkpOworICAgICAgICBtX2ppdC5tb3ZlUHRyVG9Eb3Vi
bGUodGVtcC5ncHIoKSwgcmVzdWx0LmZwcigpKTsKKyNlbHNlCisgICAgICAgIG1faml0LmxvYWRE
b3VibGUoYWRkcmVzc09mRG91YmxlQ29uc3RhbnQobm9kZS5jaGlsZDEoKSksIHJlc3VsdC5mcHIo
KSk7CisjZW5kaWYKKyAgICAgICAgZG91YmxlUmVzdWx0KHJlc3VsdC5mcHIoKSwgbV9jb21waWxl
SW5kZXgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIFNwZWN1bGF0ZUludGVn
ZXJPcGVyYW5kIG9wMSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICBGUFJUZW1wb3JhcnkgcmVz
dWx0KHRoaXMpOworICAgIG1faml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKG9wMS5ncHIoKSwgcmVz
dWx0LmZwcigpKTsKKyAgICBkb3VibGVSZXN1bHQocmVzdWx0LmZwcigpLCBtX2NvbXBpbGVJbmRl
eCk7Cit9CisKIHN0YXRpYyBkb3VibGUgY2xhbXBEb3VibGVUb0J5dGUoZG91YmxlIGQpCiB7CiAg
ICAgZCArPSAwLjU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAxMTIwMTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTE3MzIsNiArMTczMiw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxPblN0cmluZyhOb2RlJik7CiAg
ICAgdm9pZCBjb21waWxlVmFsdWVUb0ludDMyKE5vZGUmKTsKICAgICB2b2lkIGNvbXBpbGVVSW50
MzJUb051bWJlcihOb2RlJik7CisgICAgdm9pZCBjb21waWxlSW50MzJUb0RvdWJsZShOb2RlJik7
CiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxPbkJ5dGVBcnJheShOb2RlJik7CiAgICAgdm9pZCBj
b21waWxlUHV0QnlWYWxGb3JCeXRlQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwg
Tm9kZSYpOwogICAgIHZvaWQgY29tcGlsZUFkZChOb2RlJik7CkBAIC0xOTg0LDYgKzE5ODUsNyBA
QCBwdWJsaWM6CiAjZW5kaWYKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2ppdCk7CisgICAgICAg
IEFTU0VSVCh1c2UudXNlS2luZCgpICE9IERvdWJsZVVzZSk7CiAgICAgICAgIGlmIChqaXQtPmlz
RmlsbGVkKG1faW5kZXgpKQogICAgICAgICAgICAgZ3ByKCk7CiAgICAgfQpAQCAtMjAzMyw2ICsy
MDM1LDE1IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2Zwck9ySW52YWxpZChJbnZhbGlkRlBSUmVn
KQogICAgIHsKICAgICAgICAgQVNTRVJUKG1faml0KTsKKyAgICAgICAgCisgICAgICAgIC8vIFRo
aXMgaXMgY291bnRlci1pbnR1aXRpdmUgYnV0IGNvcnJlY3QuIERvdWJsZU9wZXJhbmQgaXMgaW50
ZW5kZWQgdG8KKyAgICAgICAgLy8gYmUgdXNlZCBvbmx5IHdoZW4geW91J3JlIGEgbm9kZSB0aGF0
IGlzIGhhcHB5IHRvIGFjY2VwdCBhbiB1bnR5cGVkCisgICAgICAgIC8vIHZhbHVlLCBidXQgd2ls
bCBzcGVjaWFsLWNhc2UgZm9yIGRvdWJsZXMgKHVzaW5nIERvdWJsZU9wZXJhbmQpIGlmIHRoZQor
ICAgICAgICAvLyB2YWx1ZSBoYXBwZW5lZCB0byBhbHJlYWR5IGJlIHJlcHJlc2VudGVkIGFzIGEg
ZG91YmxlLiBUaGUgaW1wbGljYXRpb24KKyAgICAgICAgLy8gaXMgdGhhdCB5b3Ugd2lsbCBub3Qg
dHJ5IHRvIGZvcmNlIHRoZSB2YWx1ZSB0byBiZWNvbWUgYSBkb3VibGUgaWYgaXQKKyAgICAgICAg
Ly8gaXMgbm90IG9uZSBhbHJlYWR5LgorICAgICAgICBBU1NFUlQodXNlLnVzZUtpbmQoKSAhPSBE
b3VibGVVc2UpOworICAgICAgICAKICAgICAgICAgaWYgKGppdC0+aXNGaWxsZWREb3VibGUobV9p
bmRleCkpCiAgICAgICAgICAgICBmcHIoKTsKICAgICB9CkBAIC0yMDc4LDYgKzIwODksNyBAQCBw
dWJsaWM6CiAjZW5kaWYKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2ppdCk7CisgICAgICAgIEFT
U0VSVCh1c2UudXNlS2luZCgpICE9IERvdWJsZVVzZSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAg
ICAgICAgaWYgKGppdC0+aXNGaWxsZWQobV9pbmRleCkpCiAgICAgICAgICAgICBncHIoKTsKQEAg
LTIxODgsNiArMjIwMCw3IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2dwck9ySW52YWxpZChJbnZh
bGlkR1BSUmVnKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1faml0KTsKKyAgICAgICAgQVNTRVJU
KHVzZS51c2VLaW5kKCkgIT0gRG91YmxlVXNlKTsKICAgICAgICAgaWYgKGppdC0+aXNGaWxsZWQo
bV9pbmRleCkpCiAgICAgICAgICAgICBncHIoKTsKICAgICB9CkBAIC0yMzYwLDYgKzIzNzMsNyBA
QCBwdWJsaWM6CiAjZW5kaWYKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2ppdCk7CisgICAgICAg
IEFTU0VSVCh1c2UudXNlS2luZCgpICE9IERvdWJsZVVzZSk7CiAgICAgICAgIGlmIChqaXQtPmlz
RmlsbGVkKG1faW5kZXgpKQogICAgICAgICAgICAgZ3ByKCk7CiAgICAgfQpAQCAtMjQwNCw2ICsy
NDE4LDcgQEAgcHVibGljOgogICAgICAgICAsIG1fZ3ByT3JJbnZhbGlkKEludmFsaWRHUFJSZWcp
CiAgICAgewogICAgICAgICBBU1NFUlQobV9qaXQpOworICAgICAgICBBU1NFUlQodXNlLnVzZUtp
bmQoKSAhPSBEb3VibGVVc2UpOwogICAgICAgICBpZiAoaml0LT5pc0ZpbGxlZChtX2luZGV4KSkK
ICAgICAgICAgICAgIGdwcigpOwogICAgIH0KQEAgLTI0NDUsNiArMjQ2MCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgLCBtX2Zwck9ySW52YWxpZChJbnZhbGlkRlBSUmVnKQogICAgIHsKICAgICAgICAg
QVNTRVJUKG1faml0KTsKKyAgICAgICAgQVNTRVJUKHVzZS51c2VLaW5kKCkgPT0gRG91YmxlVXNl
KTsKICAgICAgICAgaWYgKGppdC0+aXNGaWxsZWQobV9pbmRleCkpCiAgICAgICAgICAgICBmcHIo
KTsKICAgICB9CkBAIC0yNDgxLDYgKzI0OTcsNyBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9ncHJP
ckludmFsaWQoSW52YWxpZEdQUlJlZykKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2ppdCk7Cisg
ICAgICAgIEFTU0VSVCh1c2UudXNlS2luZCgpICE9IERvdWJsZVVzZSk7CiAgICAgICAgIGlmIChq
aXQtPmlzRmlsbGVkKG1faW5kZXgpKQogICAgICAgICAgICAgZ3ByKCk7CiAgICAgfQpAQCAtMjUy
Miw2ICsyNTM5LDcgQEAgcHVibGljOgogICAgICAgICAsIG1fZ3ByT3JJbnZhbGlkKEludmFsaWRH
UFJSZWcpCiAgICAgewogICAgICAgICBBU1NFUlQobV9qaXQpOworICAgICAgICBBU1NFUlQodXNl
LnVzZUtpbmQoKSAhPSBEb3VibGVVc2UpOwogICAgICAgICBpZiAoaml0LT5pc0ZpbGxlZChtX2lu
ZGV4KSkKICAgICAgICAgICAgIGdwcigpOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133668</attachid>
            <date>2012-03-24 20:02:16 -0700</date>
            <delta_ts>2012-03-25 00:52:09 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>inttodouble_patch_4.diff</filename>
            <type>text/plain</type>
            <size>34789</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTEyMDE1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkxIEBA
CisyMDEyLTAzLTI0ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIGludC10by1kb3VibGUgY29udmVyc2lvbiBzaG91bGQgYmUgcmV2ZWFsZWQgdG8gQ1NFCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjEzNQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgVGhp
cyBpbnRyb2R1Y2VzIHRoZSBub3Rpb24gb2YgYW4gSW50MzJUb0RvdWJsZSBub2RlLCB3aGljaCBp
cyBpbmplY3RlZAorICAgICAgICBpbnRvIHRoZSBncmFwaCBhbnl0aW1lIHdlIGtub3cgdGhhdCB3
ZSBoYXZlIGEgZG91YmxlIHVzZSBvZiBhIG5vZGUgdGhhdAorICAgICAgICB3YXMgcHJlZGljdGVk
IGludGVnZXIuIFRoZSBJbnQzMlRvRG91YmxlIHNpbXBsaWZpZXMgZG91YmxlIHNwZWN1bGF0aW9u
CisgICAgICAgIG9uIGludGVnZXJzIGJ5IHNraXBwaW5nIHRoZSBwYXRoIHRoYXQgd291bGQgdW5i
b3ggZG91Ymxlcy4gSXQgYWxsb3dzCisgICAgICAgIGludGVnZXIgdG8gZG91YmxlIGNvbnZlcnNp
b25zIHRvIGJlIHN1YmplY3RlZCB0byBjb21tb24gc3ViZXhwcmVzc2lvbgorICAgICAgICBlbGlt
aW5hdGlvbiAoQ1NFKSBieSBhbGxvd2luZyB0aGUgQ1NFIHBoYXNlIHRvIHNlZSB3aGVyZSB0aGVz
ZQorICAgICAgICBjb252ZXJzaW9ucyBhcmUgb2NjdXJyaW5nLiBGaW5hbGx5LCBpdCBhbGxvd3Mg
dXMgdG8gc2VlIHdoZW4gYSBjb25zdGFudAorICAgICAgICBpcyBiZWluZyB1c2VkIGFzIGJvdGgg
YSBkb3VibGUgYW5kIGFuIGludGVnZXIuIFRoaXMgaXMgYSBiaXQgb2RkLCBzaW5jZQorICAgICAg
ICBpdCBtZWFucyB0aGF0IHNvbWV0aW1lcyBhIGRvdWJsZSB1c2Ugb2YgYSBjb25zdGFudCB3aWxs
IG5vdCByZWZlcgorICAgICAgICBkaXJlY3RseSB0byB0aGUgY29uc3RhbnQuIFRoaXMgc2hvdWxk
IG5vdCBjYXVzZSBwcm9ibGVtcywgZm9yIG5vdywgYnV0CisgICAgICAgIGl0IG1heSByZXF1aXJl
IHNvbWUgY2Fub25pemFsaXphdGlvbiBpbiB0aGUgZnV0dXJlIGlmIHdlIHdhbnQgdG8KKyAgICAg
ICAgc3VwcG9ydCBzdHJlbmd0aCByZWR1Y3Rpb25zIG9mIGRvdWJsZSBvcGVyYXRpb25zIGJhc2Vk
IG9uIGNvbnN0YW50cy4KKyAgICAgICAgCisgICAgICAgIFRvIGFsbG93IGluamVjdGlvbiBvZiBu
b2RlcyBpbnRvIHRoZSBncmFwaCwgdGhpcyBjaGFuZ2UgaW50cm9kdWNlcyB0aGUKKyAgICAgICAg
REZHOjpJbnNlcnRpb25TZXQsIHdoaWNoIGlzIGEgd2F5IG9mIGxhemlseSBpbnNlcnRpbmcgZWxl
bWVudHMgaW50byBhCisgICAgICAgIGxpc3QuIFRoaXMgYWxsb3dzIHRoZSBGaXh1cFBoYXNlIHRv
IHJlbWFpbiBPKE4pIGRlc3BpdGUgcGVyZm9ybWluZworICAgICAgICBtdWx0aXBsZSBpbmplY3Rp
b25zIGluIGEgc2luZ2xlIGJhc2ljIGJsb2NrLiBXaXRob3V0IHRoZSBJbnNlcnRpb25TZXQsCisg
ICAgICAgIGVhY2ggaW5qZWN0aW9uIHdvdWxkIHJlcXVpcmUgcGVyZm9ybWluZyBhbiBpbnNlcnRp
b24gaW50byBhIHZlY3RvciwKKyAgICAgICAgd2hpY2ggaXMgTyhOKSwgbGVhZGluZyB0byBPKE5e
MikgcGVyZm9ybWFuY2Ugb3ZlcmFsbC4gV2l0aCB0aGUKKyAgICAgICAgSW5zZXJ0aW9uU2V0LCBl
YWNoIGluamVjdGlvbiBzaW1wbHkgcmVjb3JkcyB3aGF0IGluc2VydGlvbiB3b3VsZCBoYXZlCisg
ICAgICAgIGJlZW4gcGVyZm9ybWVkLCBhbmQgYWxsIGluc2VydGlvbnMgYXJlIHBlcmZvcm1lZCBh
dCBvbmNlICh2aWEKKyAgICAgICAgSW5zZXJ0aW9uU2V0OjpleGVjdXRlKSBhZnRlciBwcm9jZXNz
aW5nIG9mIGEgYmFzaWMgYmxvY2sgaXMgY29tcGxldGVkLgorCisgICAgICAgICogSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9QcmVk
aWN0ZWRUeXBlLmg6CisgICAgICAgIChKU0M6OmlzQWN0aW9uYWJsZUludE11dGFibGVBcnJheVBy
ZWRpY3Rpb24pOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6aXNBY3Rpb25hYmxlRmxv
YXRNdXRhYmxlQXJyYXlQcmVkaWN0aW9uKToKKyAgICAgICAgKEpTQzo6aXNBY3Rpb25hYmxlVHlw
ZWRNdXRhYmxlQXJyYXlQcmVkaWN0aW9uKToKKyAgICAgICAgKEpTQzo6aXNBY3Rpb25hYmxlTXV0
YWJsZUFycmF5UHJlZGljdGlvbik6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0U3RhdGU6OmV4ZWN1dGUpOgorICAgICAgICAq
IGRmZy9ERkdDU0VQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q1NFUGhhc2U6OnBlcmZv
cm1Ob2RlQ1NFKToKKyAgICAgICAgKiBkZmcvREZHQ29tbW9uLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6dXNlS2luZFRvU3RyaW5nKToKKyAgICAgICAgKERGRyk6CisgICAgICAgICogZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OnJ1bik6CisgICAg
ICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBCbG9jayk6CisgICAgICAgIChGaXh1cFBo
YXNlKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAg
ICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeERvdWJsZUVkZ2UpOgorICAgICAgICAqIGRmZy9E
RkdHcmFwaC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmR1bXApOgorICAgICAgICAq
IGRmZy9ERkdJbnNlcnRpb25TZXQuaDogQWRkZWQuCisgICAgICAgIChERkcpOgorICAgICAgICAo
SW5zZXJ0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpJbnNlcnRpb246Okluc2VydGlvbik6Cisg
ICAgICAgIChKU0M6OkRGRzo6SW5zZXJ0aW9uOjppbmRleCk6CisgICAgICAgIChKU0M6OkRGRzo6
SW5zZXJ0aW9uOjplbGVtZW50KToKKyAgICAgICAgKEluc2VydGlvblNldCk6CisgICAgICAgIChK
U0M6OkRGRzo6SW5zZXJ0aW9uU2V0OjpJbnNlcnRpb25TZXQpOgorICAgICAgICAoSlNDOjpERkc6
Okluc2VydGlvblNldDo6YXBwZW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpJbnNlcnRpb25TZXQ6
OmV4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAoREZHKToK
KyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OlByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlOjpwcm9wYWdhdGUpOgorICAg
ICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXB1dGVWYWx1ZVJlY292ZXJ5Rm9yKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlVG9JbnQzMik6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnQzMlRvRG91YmxlKToKKyAgICAgICAgKERGRyk6
CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChTcGVjdWxhdGl2
ZUpJVCk6CisgICAgICAgIChKU0M6OkRGRzo6SW50ZWdlck9wZXJhbmQ6OkludGVnZXJPcGVyYW5k
KToKKyAgICAgICAgKEpTQzo6REZHOjpEb3VibGVPcGVyYW5kOjpEb3VibGVPcGVyYW5kKToKKyAg
ICAgICAgKEpTQzo6REZHOjpKU1ZhbHVlT3BlcmFuZDo6SlNWYWx1ZU9wZXJhbmQpOgorICAgICAg
ICAoSlNDOjpERkc6OlN0b3JhZ2VPcGVyYW5kOjpTdG9yYWdlT3BlcmFuZCk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRlSW50ZWdlck9wZXJhbmQ6OlNwZWN1bGF0ZUludGVnZXJPcGVyYW5k
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQ6OlNwZWN1
bGF0ZVN0cmljdEludDMyT3BlcmFuZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRlRG91
YmxlT3BlcmFuZDo6U3BlY3VsYXRlRG91YmxlT3BlcmFuZCk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRlQ2VsbE9wZXJhbmQ6OlNwZWN1bGF0ZUNlbGxPcGVyYW5kKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGVCb29sZWFuT3BlcmFuZDo6U3BlY3VsYXRlQm9vbGVhbk9wZXJhbmQp
OgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0
QnJhbmNoKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisK
IDIwMTItMDMtMjMgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBE
RkcgZG91YmxlIHZvdGluZyBtYXkgYmUgb3ZlcnplYWxvdXMgaW4gdGhlIGNhc2Ugb2YgdmFyaWFi
bGVzIHRoYXQgZW5kIHVwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMTEyMDEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTc0LDYgKzc0LDcgQEAKIAkJ
MEYyNDJEQTcxM0YzQjFFODAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjQyREE1MTNGM0Ix
QkIwMDdBREQ0QyAvKiBXZWFrUmVmZXJlbmNlSGFydmVzdGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyQkRDMTUxNTFDNUQ0RDAwQ0Q4OTEw
IC8qIERGR0ZpeHVwUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYyQkRDMTIxNTFDNUQ0QTAwQ0Q4OTEwIC8qIERGR0ZpeHVwUGhhc2UuY3Bw
ICovOyB9OwogCQkwRjJCREMxNjE1MUM1RDRGMDBDRDg5MTAgLyogREZHRml4dXBQaGFzZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQkRDMTMxNTFD
NUQ0QTAwQ0Q4OTEwIC8qIERGR0ZpeHVwUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjJCREMyMTE1MUU4MDNCMDBDRDg5MTAgLyogREZH
SW5zZXJ0aW9uU2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjJCREMxRjE1MUU4MDM4MDBDRDg5MTAgLyogREZHSW5zZXJ0aW9uU2V0LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyQzU1NkYxNDcz
OEYzMTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM1NTZFMTQ3MzhGMkUwMDEyMUU0RiAvKiBERkdDb2Rl
QmxvY2tzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMEYyQzU1NzAxNDczOEYzNTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzU1NkQxNDczOEYyRTAw
MTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuY3BwICovOyB9OwogCQkwRjQyNkE0ODE0NjBDQkIzMDAx
MzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY0MjZBNDUxNDYwQ0JBQjAwMTMxRjhGIC8qIFZhbHVlUmVjb3Zlcnku
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNzI0
LDYgKzcyNSw3IEBACiAJCTBGMjQyREE1MTNGM0IxQkIwMDdBREQ0QyAvKiBXZWFrUmVmZXJlbmNl
SGFydmVzdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYWtSZWZlcmVu
Y2VIYXJ2ZXN0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyQkRDMTIxNTFD
NUQ0QTAwQ0Q4OTEwIC8qIERGR0ZpeHVwUGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gREZHRml4dXBQaGFzZS5jcHA7IHBhdGggPSBkZmcvREZHRml4dXBQaGFz
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkJEQzEzMTUxQzVENEEwMENE
ODkxMCAvKiBERkdGaXh1cFBoYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IERGR0ZpeHVwUGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdGaXh1cFBoYXNlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGMkJEQzFGMTUxRTgwMzgwMENEODkxMCAvKiBERkdJbnNlcnRp
b25TZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHSW5zZXJ0aW9uU2V0
Lmg7IHBhdGggPSBkZmcvREZHSW5zZXJ0aW9uU2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGMkM1NTZEMTQ3MzhGMkUwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERGR0NvZGVCbG9ja3MuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJDNTU2RTE0NzM4RjJFMDAxMjFFNEYgLyogREZH
Q29kZUJsb2Nrcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBERkdDb2RlQmxv
Y2tzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDI2QTQ1MTQ2MENCQUIwMDEz
MUY4RiAvKiBWYWx1ZVJlY292ZXJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFZhbHVlUmVjb3ZlcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5OTQsNiAr
MTk5Niw3IEBACiAJCQkJODZBRTZDNEMxMzZBMTFFNDAwOTYzMDEyIC8qIERGR0dQUkluZm8uaCAq
LywKIAkJCQk4NkVDOURCNzEzMjhERjgyMDAyQjJBRDcgLyogREZHR3JhcGguY3BwICovLAogCQkJ
CTg2RUM5REI4MTMyOERGODIwMDJCMkFENyAvKiBERkdHcmFwaC5oICovLAorCQkJCTBGMkJEQzFG
MTUxRTgwMzgwMENEODkxMCAvKiBERkdJbnNlcnRpb25TZXQuaCAqLywKIAkJCQk4NkVDOURCQjEz
MjhERjgyMDAyQjJBRDcgLyogREZHSklUQ29tcGlsZXIuY3BwICovLAogCQkJCTg2RUM5REJDMTMy
OERGODIwMDJCMkFENyAvKiBERkdKSVRDb21waWxlci5oICovLAogCQkJCTg2RUNBM0U5MTMyREVG
MUMwMDJCMkFENyAvKiBERkdOb2RlLmggKi8sCkBAIC0yNTAxLDYgKzI1MDQsNyBAQAogCQkJCTBG
QTU4MUJCMTUwRTk1MzAwMEI5QTJEOSAvKiBERkdOb2RlRmxhZ3MuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGQTU4MUJDMTUwRTk1MzAwMEI5QTJEOSAvKiBERkdOb2RlVHlwZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEYyQkRDMTYxNTFDNUQ0RjAwQ0Q4OTEwIC8qIERGR0ZpeHVwUGhhc2UuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTBGMkJEQzIxMTUxRTgwM0IwMENEODkxMCAvKiBERkdJbnNlcnRpb25T
ZXQuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1ByZWRpY3RlZFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUHJlZGljdGVkVHlwZS5oCShyZXZpc2lvbiAxMTIwMTMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHJlZGljdGVkVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTks
MTAgKzE1OSw5IEBAIGlubGluZSBib29sIGlzRmxvYXQ2NEFycmF5UHJlZGljdGlvbihQcmUKICAg
ICByZXR1cm4gdmFsdWUgPT0gUHJlZGljdEZsb2F0NjRBcnJheTsKIH0KIAotaW5saW5lIGJvb2wg
aXNBY3Rpb25hYmxlTXV0YWJsZUFycmF5UHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVlKQor
aW5saW5lIGJvb2wgaXNBY3Rpb25hYmxlSW50TXV0YWJsZUFycmF5UHJlZGljdGlvbihQcmVkaWN0
ZWRUeXBlIHZhbHVlKQogewotICAgIHJldHVybiBpc0FycmF5UHJlZGljdGlvbih2YWx1ZSkKLSAg
ICAgICAgfHwgaXNCeXRlQXJyYXlQcmVkaWN0aW9uKHZhbHVlKQorICAgIHJldHVybiBpc0J5dGVB
cnJheVByZWRpY3Rpb24odmFsdWUpCiAjaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKICAgICAg
ICAgfHwgaXNJbnQ4QXJyYXlQcmVkaWN0aW9uKHZhbHVlKQogICAgICAgICB8fCBpc0ludDE2QXJy
YXlQcmVkaWN0aW9uKHZhbHVlKQpAQCAtMTcxLDEzICsxNzAsMzAgQEAgaW5saW5lIGJvb2wgaXNB
Y3Rpb25hYmxlTXV0YWJsZUFycmF5UHJlZAogICAgICAgICB8fCBpc1VpbnQ4QXJyYXlQcmVkaWN0
aW9uKHZhbHVlKQogICAgICAgICB8fCBpc1VpbnQ4Q2xhbXBlZEFycmF5UHJlZGljdGlvbih2YWx1
ZSkKICAgICAgICAgfHwgaXNVaW50MTZBcnJheVByZWRpY3Rpb24odmFsdWUpCi0gICAgICAgIHx8
IGlzVWludDMyQXJyYXlQcmVkaWN0aW9uKHZhbHVlKQorICAgICAgICB8fCBpc1VpbnQzMkFycmF5
UHJlZGljdGlvbih2YWx1ZSk7Cit9CisKK2lubGluZSBib29sIGlzQWN0aW9uYWJsZUZsb2F0TXV0
YWJsZUFycmF5UHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVlKQoreworICAgIHJldHVybiBm
YWxzZQogI2lmIENQVShYODYpIHx8IENQVShYODZfNjQpCiAgICAgICAgIHx8IGlzRmxvYXQzMkFy
cmF5UHJlZGljdGlvbih2YWx1ZSkKICNlbmRpZgogICAgICAgICB8fCBpc0Zsb2F0NjRBcnJheVBy
ZWRpY3Rpb24odmFsdWUpOwogfQogCitpbmxpbmUgYm9vbCBpc0FjdGlvbmFibGVUeXBlZE11dGFi
bGVBcnJheVByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gaXNB
Y3Rpb25hYmxlSW50TXV0YWJsZUFycmF5UHJlZGljdGlvbih2YWx1ZSkKKyAgICAgICAgfHwgaXNB
Y3Rpb25hYmxlRmxvYXRNdXRhYmxlQXJyYXlQcmVkaWN0aW9uKHZhbHVlKTsKK30KKworaW5saW5l
IGJvb2wgaXNBY3Rpb25hYmxlTXV0YWJsZUFycmF5UHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZh
bHVlKQoreworICAgIHJldHVybiBpc0FycmF5UHJlZGljdGlvbih2YWx1ZSkKKyAgICAgICAgfHwg
aXNBY3Rpb25hYmxlVHlwZWRNdXRhYmxlQXJyYXlQcmVkaWN0aW9uKHZhbHVlKTsKK30KKwogaW5s
aW5lIGJvb2wgaXNBY3Rpb25hYmxlQXJyYXlQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUp
CiB7CiAgICAgcmV0dXJuIGlzU3RyaW5nUHJlZGljdGlvbih2YWx1ZSkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAkocmV2aXNpb24gMTEy
MDEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzAwLDYgKzMwMCwxMSBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4
ZWN1dGUodW5zaWduZWQgaW5kCiAgICAgICAgIAogICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCku
c2V0KFByZWRpY3RJbnQzMik7CiAgICAgICAgIGJyZWFrOworICAgICAgICAKKyAgICBjYXNlIElu
dDMyVG9Eb3VibGU6CisgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRp
Y3ROdW1iZXIpOworICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFByZWRpY3REb3VibGUp
OworICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgIGNhc2UgVmFsdWVBZGQ6CiAgICAg
Y2FzZSBBcml0aEFkZDogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQ
aGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQ
aGFzZS5jcHAJKHJldmlzaW9uIDExMjAxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ1NFUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01ODcsNiArNTg3LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBHZXRTdHJpbmdMZW5ndGg6CiAgICAgICAgIGNhc2UgU3RyaW5nQ2hh
ckF0OgogICAgICAgICBjYXNlIFN0cmluZ0NoYXJDb2RlQXQ6CisgICAgICAgIGNhc2UgSW50MzJU
b0RvdWJsZToKICAgICAgICAgICAgIHNldFJlcGxhY2VtZW50KHB1cmVDU0Uobm9kZSkpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ29tbW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDb21tb24uaAkocmV2aXNpb24gMTEyMDEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDb21tb24uaAkod29ya2luZyBjb3B5KQpAQCAtOTcsOSArOTcsMjMgQEAgc3RydWN0
IE5vZGVJbmRleFRyYWl0cyB7CiAKIGVudW0gVXNlS2luZCB7CiAgICAgVW50eXBlZFVzZSwKKyAg
ICBEb3VibGVVc2UsCiAgICAgTGFzdFVzZUtpbmQgLy8gTXVzdCBhbHdheXMgYmUgdGhlIGxhc3Qg
ZW50cnkgaW4gdGhlIGVudW0sIGFzIGl0IGlzIHVzZWQgdG8gZGVub3RlIHRoZSBudW1iZXIgb2Yg
ZW51bSBlbGVtZW50cy4KIH07CiAKK2lubGluZSBjb25zdCBjaGFyKiB1c2VLaW5kVG9TdHJpbmco
VXNlS2luZCB1c2VLaW5kKQoreworICAgIHN3aXRjaCAodXNlS2luZCkgeworICAgIGNhc2UgVW50
eXBlZFVzZToKKyAgICAgICAgcmV0dXJuICIiOworICAgIGNhc2UgRG91YmxlVXNlOgorICAgICAg
ICByZXR1cm4gImQiOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpE
RkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAxMTIwMTMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKERGR19KSVQpCiAKICNpbmNsdWRlICJERkdHcmFwaC5o
IgorI2luY2x1ZGUgIkRGR0luc2VydGlvblNldC5oIgogI2luY2x1ZGUgIkRGR1BoYXNlLmgiCiAK
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKQEAgLTQyLDExICs0MywyMCBAQCBwdWJs
aWM6CiAgICAgCiAgICAgdm9pZCBydW4oKQogICAgIHsKLSAgICAgICAgZm9yIChtX2NvbXBpbGVJ
bmRleCA9IDA7IG1fY29tcGlsZUluZGV4IDwgbV9ncmFwaC5zaXplKCk7ICsrbV9jb21waWxlSW5k
ZXgpCi0gICAgICAgICAgICBmaXh1cE5vZGUobV9ncmFwaFttX2NvbXBpbGVJbmRleF0pOworICAg
ICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IDA7IGJsb2NrSW5kZXggPCBtX2dyYXBo
Lm1fYmxvY2tzLnNpemUoKTsgKytibG9ja0luZGV4KQorICAgICAgICAgICAgZml4dXBCbG9jayht
X2dyYXBoLm1fYmxvY2tzW2Jsb2NrSW5kZXhdLmdldCgpKTsKICAgICB9CiAKIHByaXZhdGU6Cisg
ICAgdm9pZCBmaXh1cEJsb2NrKEJhc2ljQmxvY2sqIGJsb2NrKQorICAgIHsKKyAgICAgICAgZm9y
IChtX2luZGV4SW5CbG9jayA9IDA7IG1faW5kZXhJbkJsb2NrIDwgYmxvY2stPnNpemUoKTsgKytt
X2luZGV4SW5CbG9jaykgeworICAgICAgICAgICAgbV9jb21waWxlSW5kZXggPSBibG9jay0+YXQo
bV9pbmRleEluQmxvY2spOworICAgICAgICAgICAgZml4dXBOb2RlKG1fZ3JhcGhbbV9jb21waWxl
SW5kZXhdKTsKKyAgICAgICAgfQorICAgICAgICBtX2luc2VydGlvblNldC5leGVjdXRlKCpibG9j
ayk7CisgICAgfQorICAgIAogICAgIHZvaWQgZml4dXBOb2RlKE5vZGUmIG5vZGUpCiAgICAgewog
ICAgICAgICBpZiAoIW5vZGUuc2hvdWxkR2VuZXJhdGUoKSkKQEAgLTE1MiwxMSArMTYyLDEzMCBA
QCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAor
ICAgICAgICBjYXNlIENvbXBhcmVFcToKKyAgICAgICAgY2FzZSBDb21wYXJlTGVzczoKKyAgICAg
ICAgY2FzZSBDb21wYXJlTGVzc0VxOgorICAgICAgICBjYXNlIENvbXBhcmVHcmVhdGVyOgorICAg
ICAgICBjYXNlIENvbXBhcmVHcmVhdGVyRXE6CisgICAgICAgIGNhc2UgQ29tcGFyZVN0cmljdEVx
OiB7CisgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlSW50ZWdlcihtX2dyYXBo
W25vZGUuY2hpbGQxKCldLCBtX2dyYXBoW25vZGUuY2hpbGQyKCldKSkKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGlmICghTm9kZTo6c2hvdWxkU3BlY3VsYXRlTnVtYmVyKG1f
Z3JhcGhbbm9kZS5jaGlsZDEoKV0sIG1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0pKQorICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgZml4RG91YmxlRWRnZSgwKTsKKyAgICAgICAgICAg
IGZpeERvdWJsZUVkZ2UoMSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAg
ICAgICAgCisgICAgICAgIGNhc2UgTG9naWNhbE5vdDogeworICAgICAgICAgICAgaWYgKG1fZ3Jh
cGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlSW50ZWdlcigpKQorICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKCFtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3Vs
ZFNwZWN1bGF0ZU51bWJlcigpKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
Zml4RG91YmxlRWRnZSgwKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
ICAgICAKKyAgICAgICAgY2FzZSBCcmFuY2g6IHsKKyAgICAgICAgICAgIGlmIChtX2dyYXBoW25v
ZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZUludGVnZXIoKSkKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGlmICghbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVj
dWxhdGVOdW1iZXIoKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGZpeERv
dWJsZUVkZ2UoMCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAgICAg
CisgICAgICAgIGNhc2UgU2V0TG9jYWw6IHsKKyAgICAgICAgICAgIGlmIChtX2dyYXBoLmlzQ2Fw
dHVyZWQobm9kZS5sb2NhbCgpKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGlmICghbm9kZS52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+c2hvdWxkVXNlRG91YmxlRm9ybWF0KCkp
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBmaXhEb3VibGVFZGdlKDApOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNl
IEFyaXRoQWRkOgorICAgICAgICBjYXNlIFZhbHVlQWRkOiB7CisgICAgICAgICAgICBpZiAobV9n
cmFwaC5hZGRTaG91bGRTcGVjdWxhdGVJbnRlZ2VyKG5vZGUpKQorICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgaWYgKCFOb2RlOjpzaG91bGRTcGVjdWxhdGVOdW1iZXIobV9ncmFw
aFtub2RlLmNoaWxkMSgpXSwgbV9ncmFwaFtub2RlLmNoaWxkMigpXSkpCisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBmaXhEb3VibGVFZGdlKDApOworICAgICAgICAgICAgZml4
RG91YmxlRWRnZSgxKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgICAg
ICAKKyAgICAgICAgY2FzZSBBcml0aFN1YjogeworICAgICAgICAgICAgaWYgKG1fZ3JhcGguYWRk
U2hvdWxkU3BlY3VsYXRlSW50ZWdlcihub2RlKQorICAgICAgICAgICAgICAgICYmIG5vZGUuY2Fu
U3BlY3VsYXRlSW50ZWdlcigpKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
Zml4RG91YmxlRWRnZSgwKTsKKyAgICAgICAgICAgIGZpeERvdWJsZUVkZ2UoMSk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNhc2UgQXJpdGhO
ZWdhdGU6IHsKKyAgICAgICAgICAgIGlmIChtX2dyYXBoLm5lZ2F0ZVNob3VsZFNwZWN1bGF0ZUlu
dGVnZXIobm9kZSkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBmaXhEb3Vi
bGVFZGdlKDApOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgICAgIAor
ICAgICAgICBjYXNlIEFyaXRoTWluOgorICAgICAgICBjYXNlIEFyaXRoTWF4OgorICAgICAgICBj
YXNlIEFyaXRoTXVsOgorICAgICAgICBjYXNlIEFyaXRoRGl2OgorICAgICAgICBjYXNlIEFyaXRo
TW9kOiB7CisgICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlSW50ZWdlcihtX2dy
YXBoW25vZGUuY2hpbGQxKCldLCBtX2dyYXBoW25vZGUuY2hpbGQyKCldKQorICAgICAgICAgICAg
ICAgICYmIG5vZGUuY2FuU3BlY3VsYXRlSW50ZWdlcigpKQorICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgZml4RG91YmxlRWRnZSgwKTsKKyAgICAgICAgICAgIGZpeERvdWJsZUVk
Z2UoMSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAgICAgCisgICAg
ICAgIGNhc2UgQXJpdGhBYnM6IHsKKyAgICAgICAgICAgIGlmIChtX2dyYXBoW25vZGUuY2hpbGQx
KCldLnNob3VsZFNwZWN1bGF0ZUludGVnZXIoKQorICAgICAgICAgICAgICAgICYmIG5vZGUuY2Fu
U3BlY3VsYXRlSW50ZWdlcigpKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
Zml4RG91YmxlRWRnZSgwKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
ICAgICAKKyAgICAgICAgY2FzZSBBcml0aFNxcnQ6IHsKKyAgICAgICAgICAgIGZpeERvdWJsZUVk
Z2UoMCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAgICAgCisgICAg
ICAgIGNhc2UgUHV0QnlWYWw6IHsKKyAgICAgICAgICAgIGlmICghbV9ncmFwaFtub2RlLmNoaWxk
MSgpXS5wcmVkaWN0aW9uKCkgfHwgIW1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0ucHJlZGljdGlvbigp
KQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKCFtX2dyYXBoW25vZGUu
Y2hpbGQyKCldLnNob3VsZFNwZWN1bGF0ZUludGVnZXIoKSkKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGlmIChpc0FjdGlvbmFibGVJbnRNdXRhYmxlQXJyYXlQcmVkaWN0aW9u
KG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ucHJlZGljdGlvbigpKSkgeworICAgICAgICAgICAgICAg
IGlmIChtX2dyYXBoW25vZGUuY2hpbGQzKCldLmlzQ29uc3RhbnQoKSkKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGhbbm9kZS5jaGlsZDMoKV0u
c2hvdWxkU3BlY3VsYXRlSW50ZWdlcigpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICBmaXhEb3VibGVFZGdlKDIpOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGlzQWN0aW9uYWJsZUZsb2F0TXV0YWJsZUFy
cmF5UHJlZGljdGlvbihtX2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKSkpIHsKKyAg
ICAgICAgICAgICAgICBmaXhEb3VibGVFZGdlKDIpOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgICAg
IAogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogI2lm
IERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKKyAgICAgICAgaWYgKCEobm9k
ZS5mbGFncygpICYgTm9kZUhhc1ZhckFyZ3MpKSB7CisgICAgICAgICAgICBkYXRhTG9nKCJuZXcg
Y2hpbGRyZW46ICIpOworICAgICAgICAgICAgbm9kZS5kdW1wQ2hpbGRyZW4oV1RGOjpkYXRhRmls
ZSgpKTsKKyAgICAgICAgfQogICAgICAgICBkYXRhTG9nKCJcbiIpOwogI2VuZGlmCiAgICAgfQpA
QCAtMTc5LDcgKzMwOCwzOSBAQCBwcml2YXRlOgogICAgICAgICBlZGdlID0gbmV3RWRnZTsKICAg
ICB9CiAgICAgCisgICAgdm9pZCBmaXhEb3VibGVFZGdlKHVuc2lnbmVkIGNoaWxkSW5kZXgpCisg
ICAgeworICAgICAgICBOb2RlJiBzb3VyY2UgPSBtX2dyYXBoW21fY29tcGlsZUluZGV4XTsKKyAg
ICAgICAgRWRnZSYgZWRnZSA9IHNvdXJjZS5jaGlsZHJlbi5jaGlsZChjaGlsZEluZGV4KTsKKyAg
ICAgICAgCisgICAgICAgIGlmICghbV9ncmFwaFtlZGdlXS5zaG91bGRTcGVjdWxhdGVJbnRlZ2Vy
KCkpIHsKKyAgICAgICAgICAgIGVkZ2Uuc2V0VXNlS2luZChEb3VibGVVc2UpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBOb2RlSW5kZXggcmVzdWx0
SW5kZXggPSAoTm9kZUluZGV4KW1fZ3JhcGguc2l6ZSgpOworICAgICAgICAKKyNpZiBERkdfRU5B
QkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCisgICAgICAgIGRhdGFMb2coIihyZXBsYWNp
bmcgQCV1LT5AJXUgd2l0aCBAJXUtPkAldSkgIiwKKyAgICAgICAgICAgICAgICBtX2NvbXBpbGVJ
bmRleCwgZWRnZS5pbmRleCgpLCBtX2NvbXBpbGVJbmRleCwgcmVzdWx0SW5kZXgpOworI2VuZGlm
CisgICAgICAgIAorICAgICAgICAvLyBGaXggdGhlIGVkZ2UgdXAgaGVyZSBiZWNhdXNlIGl0J3Mg
YSByZWZlcmVuY2UgdGhhdCB3aWxsIGJlIGNsb2JiZXJlZCBieQorICAgICAgICAvLyB0aGUgYXBw
ZW5kKCkgYmVsb3cuCisgICAgICAgIE5vZGVJbmRleCBvbGRJbmRleCA9IGVkZ2UuaW5kZXgoKTsK
KyAgICAgICAgZWRnZSA9IEVkZ2UocmVzdWx0SW5kZXgsIERvdWJsZVVzZSk7CisKKyAgICAgICAg
bV9ncmFwaC5hcHBlbmQoTm9kZShJbnQzMlRvRG91YmxlLCBzb3VyY2UuY29kZU9yaWdpbiwgb2xk
SW5kZXgpKTsKKyAgICAgICAgbV9pbnNlcnRpb25TZXQuYXBwZW5kKG1faW5kZXhJbkJsb2NrLCBy
ZXN1bHRJbmRleCk7CisgICAgICAgIAorICAgICAgICBOb2RlJiBpbnQzMlRvRG91YmxlID0gbV9n
cmFwaFtyZXN1bHRJbmRleF07CisgICAgICAgIGludDMyVG9Eb3VibGUucHJlZGljdChQcmVkaWN0
RG91YmxlKTsKKyAgICAgICAgaW50MzJUb0RvdWJsZS5yZWYoKTsKKyAgICB9CisgICAgCisgICAg
dW5zaWduZWQgbV9pbmRleEluQmxvY2s7CiAgICAgTm9kZUluZGV4IG1fY29tcGlsZUluZGV4Owor
ICAgIEluc2VydGlvblNldDxOb2RlSW5kZXg+IG1faW5zZXJ0aW9uU2V0OwogfTsKICAgICAKIHZv
aWQgcGVyZm9ybUZpeHVwKEdyYXBoJiBncmFwaCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHR3JhcGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR3JhcGguY3BwCShyZXZpc2lvbiAxMTIwMTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dyYXBoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY0LDE1ICsxNjQsMzAgQEAg
dm9pZCBHcmFwaDo6ZHVtcChOb2RlSW5kZXggbm9kZUluZGV4KQogICAgICAgICAgICAgICAgIGRh
dGFMb2coIiwgIik7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgaGFzUHJpbnRl
ZCA9IHRydWU7Ci0gICAgICAgICAgICBkYXRhTG9nKCJAJXUlcyIsIG1fdmFyQXJnQ2hpbGRyZW5b
Y2hpbGRJZHhdLmluZGV4KCksIHByZWRpY3Rpb25Ub0FiYnJldmlhdGVkU3RyaW5nKGF0KGNoaWxk
SWR4KS5wcmVkaWN0aW9uKCkpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIiVzQCV1JXMiLAorICAg
ICAgICAgICAgICAgICAgICB1c2VLaW5kVG9TdHJpbmcobV92YXJBcmdDaGlsZHJlbltjaGlsZElk
eF0udXNlS2luZCgpKSwKKyAgICAgICAgICAgICAgICAgICAgbV92YXJBcmdDaGlsZHJlbltjaGls
ZElkeF0uaW5kZXgoKSwKKyAgICAgICAgICAgICAgICAgICAgcHJlZGljdGlvblRvQWJicmV2aWF0
ZWRTdHJpbmcoYXQoY2hpbGRJZHgpLnByZWRpY3Rpb24oKSkpOwogICAgICAgICB9CiAgICAgfSBl
bHNlIHsKLSAgICAgICAgaWYgKCEhbm9kZS5jaGlsZDEoKSkKLSAgICAgICAgICAgIGRhdGFMb2co
IkAldSVzIiwgbm9kZS5jaGlsZDEoKS5pbmRleCgpLCBwcmVkaWN0aW9uVG9BYmJyZXZpYXRlZFN0
cmluZyhhdChub2RlLmNoaWxkMSgpKS5wcmVkaWN0aW9uKCkpKTsKLSAgICAgICAgaWYgKCEhbm9k
ZS5jaGlsZDIoKSkKLSAgICAgICAgICAgIGRhdGFMb2coIiwgQCV1JXMiLCBub2RlLmNoaWxkMigp
LmluZGV4KCksIHByZWRpY3Rpb25Ub0FiYnJldmlhdGVkU3RyaW5nKGF0KG5vZGUuY2hpbGQyKCkp
LnByZWRpY3Rpb24oKSkpOwotICAgICAgICBpZiAoISFub2RlLmNoaWxkMygpKQotICAgICAgICAg
ICAgZGF0YUxvZygiLCBAJXUlcyIsIG5vZGUuY2hpbGQzKCkuaW5kZXgoKSwgcHJlZGljdGlvblRv
QWJicmV2aWF0ZWRTdHJpbmcoYXQobm9kZS5jaGlsZDMoKSkucHJlZGljdGlvbigpKSk7CisgICAg
ICAgIGlmICghIW5vZGUuY2hpbGQxKCkpIHsKKyAgICAgICAgICAgIGRhdGFMb2coIiVzQCV1JXMi
LAorICAgICAgICAgICAgICAgICAgICB1c2VLaW5kVG9TdHJpbmcobm9kZS5jaGlsZDEoKS51c2VL
aW5kKCkpLAorICAgICAgICAgICAgICAgICAgICBub2RlLmNoaWxkMSgpLmluZGV4KCksCisgICAg
ICAgICAgICAgICAgICAgIHByZWRpY3Rpb25Ub0FiYnJldmlhdGVkU3RyaW5nKGF0KG5vZGUuY2hp
bGQxKCkpLnByZWRpY3Rpb24oKSkpOworICAgICAgICB9CisgICAgICAgIGlmICghIW5vZGUuY2hp
bGQyKCkpIHsKKyAgICAgICAgICAgIGRhdGFMb2coIiwgJXNAJXUlcyIsCisgICAgICAgICAgICAg
ICAgICAgIHVzZUtpbmRUb1N0cmluZyhub2RlLmNoaWxkMigpLnVzZUtpbmQoKSksCisgICAgICAg
ICAgICAgICAgICAgIG5vZGUuY2hpbGQyKCkuaW5kZXgoKSwKKyAgICAgICAgICAgICAgICAgICAg
cHJlZGljdGlvblRvQWJicmV2aWF0ZWRTdHJpbmcoYXQobm9kZS5jaGlsZDIoKSkucHJlZGljdGlv
bigpKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCEhbm9kZS5jaGlsZDMoKSkgeworICAgICAg
ICAgICAgZGF0YUxvZygiLCAlc0AldSVzIiwKKyAgICAgICAgICAgICAgICAgICAgdXNlS2luZFRv
U3RyaW5nKG5vZGUuY2hpbGQzKCkudXNlS2luZCgpKSwKKyAgICAgICAgICAgICAgICAgICAgbm9k
ZS5jaGlsZDMoKS5pbmRleCgpLAorICAgICAgICAgICAgICAgICAgICBwcmVkaWN0aW9uVG9BYmJy
ZXZpYXRlZFN0cmluZyhhdChub2RlLmNoaWxkMygpKS5wcmVkaWN0aW9uKCkpKTsKKyAgICAgICAg
fQogICAgICAgICBoYXNQcmludGVkID0gISFub2RlLmNoaWxkMSgpOwogICAgIH0KIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnNlcnRpb25TZXQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luc2VydGlvblNldC5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnNlcnRpb25TZXQuaAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw5OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaWZuZGVmIERGR0luc2VydGlvblNldF9oCisjZGVmaW5lIERGR0luc2Vj
dGlvblNldF9oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIEVOQUJMRShERkdf
SklUKQorCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIERGRyB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgorY2xhc3MgSW5zZXJ0
aW9uIHsKK3B1YmxpYzoKKyAgICBJbnNlcnRpb24oKSB7IH0KKyAgICAKKyAgICBJbnNlcnRpb24o
c2l6ZV90IGluZGV4LCBjb25zdCBFbGVtZW50VHlwZSYgZWxlbWVudCkKKyAgICAgICAgOiBtX2lu
ZGV4KGluZGV4KQorICAgICAgICAsIG1fZWxlbWVudChlbGVtZW50KQorICAgIHsKKyAgICB9Cisg
ICAgCisgICAgc2l6ZV90IGluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9pbmRleDsgfQorICAgIGNv
bnN0IEVsZW1lbnRUeXBlJiBlbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50OyB9Citw
cml2YXRlOgorICAgIHNpemVfdCBtX2luZGV4OworICAgIEVsZW1lbnRUeXBlIG1fZWxlbWVudDsK
K307CisKK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgorY2xhc3MgSW5zZXJ0aW9uU2V0
IHsKK3B1YmxpYzoKKyAgICBJbnNlcnRpb25TZXQoKSB7IH0KKyAgICAKKyAgICB2b2lkIGFwcGVu
ZChjb25zdCBJbnNlcnRpb248RWxlbWVudFR5cGU+JiBpbnNlcnRpb24pCisgICAgeworICAgICAg
ICBBU1NFUlQoIW1faW5zZXJ0aW9ucy5zaXplKCkgfHwgbV9pbnNlcnRpb25zLmxhc3QoKS5pbmRl
eCgpIDw9IGluc2VydGlvbi5pbmRleCgpKTsKKyAgICAgICAgbV9pbnNlcnRpb25zLmFwcGVuZChp
bnNlcnRpb24pOworICAgIH0KKyAgICAKKyAgICB2b2lkIGFwcGVuZChzaXplX3QgaW5kZXgsIGNv
bnN0IEVsZW1lbnRUeXBlJiBlbGVtZW50KQorICAgIHsKKyAgICAgICAgYXBwZW5kKEluc2VydGlv
bjxFbGVtZW50VHlwZT4oaW5kZXgsIGVsZW1lbnQpKTsKKyAgICB9CisgICAgCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ29sbGVjdGlvblR5cGU+CisgICAgdm9pZCBleGVjdXRlKENvbGxlY3Rpb25U
eXBlJiBjb2xsZWN0aW9uKQorICAgIHsKKyAgICAgICAgaWYgKCFtX2luc2VydGlvbnMuc2l6ZSgp
KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjb2xsZWN0aW9uLmdyb3coY29sbGVjdGlv
bi5zaXplKCkgKyBtX2luc2VydGlvbnMuc2l6ZSgpKTsKKyAgICAgICAgc2l6ZV90IGxhc3RJbmRl
eCA9IGNvbGxlY3Rpb24uc2l6ZSgpOworICAgICAgICBmb3IgKHNpemVfdCBpbmRleEluSW5zZXJ0
aW9ucyA9IG1faW5zZXJ0aW9ucy5zaXplKCk7IGluZGV4SW5JbnNlcnRpb25zLS07KSB7CisgICAg
ICAgICAgICBJbnNlcnRpb248RWxlbWVudFR5cGU+JiBpbnNlcnRpb24gPSBtX2luc2VydGlvbnNb
aW5kZXhJbkluc2VydGlvbnNdOworICAgICAgICAgICAgc2l6ZV90IGZpcnN0SW5kZXggPSBpbnNl
cnRpb24uaW5kZXgoKSArIGluZGV4SW5JbnNlcnRpb25zOworICAgICAgICAgICAgc2l6ZV90IGlu
ZGV4T2Zmc2V0ID0gaW5kZXhJbkluc2VydGlvbnMgKyAxOworICAgICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IGxhc3RJbmRleDsgaS0tID4gZmlyc3RJbmRleDspCisgICAgICAgICAgICAgICAgY29s
bGVjdGlvbltpXSA9IGNvbGxlY3Rpb25baSAtIGluZGV4T2Zmc2V0XTsKKyAgICAgICAgICAgIGNv
bGxlY3Rpb25bZmlyc3RJbmRleF0gPSBpbnNlcnRpb24uZWxlbWVudCgpOworICAgICAgICAgICAg
bGFzdEluZGV4ID0gZmlyc3RJbmRleDsKKyAgICAgICAgfQorICAgICAgICBtX2luc2VydGlvbnMu
cmVzaXplKDApOworICAgIH0KK3ByaXZhdGU6CisgICAgVmVjdG9yPEluc2VydGlvbjxFbGVtZW50
VHlwZT4sIDg+IG1faW5zZXJ0aW9uczsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcK
KworI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQorCisjZW5kaWYgLy8gREZHSW5zZXJ0aW9uU2V0
X2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2aXNp
b24gMTEyMDEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC03NSw2ICs3NSw5IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
REZHIHsKICAgICBtYWNybyhWYWx1ZVRvSW50MzIsIE5vZGVSZXN1bHRJbnQzMiB8IE5vZGVNdXN0
R2VuZXJhdGUpIFwKICAgICAvKiBVc2VkIHRvIGJveCB0aGUgcmVzdWx0IG9mIFVSU2hpZnQgbm9k
ZXMgKHJlc3VsdCBoYXMgcmFuZ2UgMC4uMl4zMi0xKS4gKi9cCiAgICAgbWFjcm8oVUludDMyVG9O
dW1iZXIsIE5vZGVSZXN1bHROdW1iZXIpIFwKKyAgICAvKiBVc2VkIHRvIGNhc3Qga25vd24gaW50
ZWdlcnMgdG8gZG91Ymxlcywgc28gYXMgdG8gc2VwYXJhdGUgdGhlIGRvdWJsZSBmb3JtICovXAor
ICAgIC8qIG9mIHRoZSB2YWx1ZSBmcm9tIHRoZSBpbnRlZ2VyIGZvcm0uICovXAorICAgIG1hY3Jv
KEludDMyVG9Eb3VibGUsIE5vZGVSZXN1bHROdW1iZXIpIFwKICAgICBcCiAgICAgLyogTm9kZXMg
Zm9yIGFyaXRobWV0aWMgb3BlcmF0aW9ucy4gKi9cCiAgICAgbWFjcm8oQXJpdGhBZGQsIE5vZGVS
ZXN1bHROdW1iZXIpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxMTIw
MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUyLDcgKzU1Miw4IEBAIHByaXZhdGU6CiAg
ICAgICAgIGNhc2UgR2V0VWludDMyQXJyYXlMZW5ndGg6CiAgICAgICAgIGNhc2UgR2V0RmxvYXQz
MkFycmF5TGVuZ3RoOgogICAgICAgICBjYXNlIEdldEZsb2F0NjRBcnJheUxlbmd0aDoKLSAgICAg
ICAgY2FzZSBHZXRTdHJpbmdMZW5ndGg6IHsKKyAgICAgICAgY2FzZSBHZXRTdHJpbmdMZW5ndGg6
CisgICAgICAgIGNhc2UgSW50MzJUb0RvdWJsZTogewogICAgICAgICAgICAgLy8gVGhpcyBub2Rl
IHNob3VsZCBuZXZlciBiZSB2aXNpYmxlIGF0IHRoaXMgc3RhZ2Ugb2YgY29tcGlsYXRpb24uIEl0
IGlzCiAgICAgICAgICAgICAvLyBpbnNlcnRlZCBieSBmaXh1cCgpLCB3aGljaCBmb2xsb3dzIHRo
aXMgcGhhc2UuCiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cAkocmV2aXNpb24gMTEyMDEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg3OCw2ICsxODc4LDExIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgY29tcGls
ZVZhbHVlVG9JbnQzMihub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgICAgICAKKyAg
ICBjYXNlIEludDMyVG9Eb3VibGU6IHsKKyAgICAgICAgY29tcGlsZUludDMyVG9Eb3VibGUobm9k
ZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KIAogICAgIGNhc2UgVmFsdWVBZGQ6CiAgICAgY2Fz
ZSBBcml0aEFkZDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTEyMDEzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY2
Miw5ICsxNjYyLDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdE9iamVjdE9yT3RoZXJCcgog
CiB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0QnJhbmNoKE5vZGUmIG5vZGUpCiB7Ci0gICAgSlNW
YWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS5jaGlsZDEoKSk7Ci0gICAgR1BSUmVnIHZhbHVl
R1BSID0gdmFsdWUuZ3ByKCk7Ci0gICAgCiAgICAgQmxvY2tJbmRleCB0YWtlbiA9IG5vZGUudGFr
ZW5CbG9ja0luZGV4KCk7CiAgICAgQmxvY2tJbmRleCBub3RUYWtlbiA9IG5vZGUubm90VGFrZW5C
bG9ja0luZGV4KCk7CiAgICAgCkBAIC0xNjk1LDYgKzE2OTIsOSBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjplbWl0QnJhbmNoKE5vZGUmIG5vCiAgICAgICAgIAogICAgICAgICBub1Jlc3VsdChtX2Nv
bXBpbGVJbmRleCk7CiAgICAgfSBlbHNlIHsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUo
dGhpcywgbm9kZS5jaGlsZDEoKSk7CisgICAgICAgIEdQUlJlZyB2YWx1ZUdQUiA9IHZhbHVlLmdw
cigpOworICAgICAgICAKICAgICAgICAgYm9vbCBwcmVkaWN0Qm9vbGVhbiA9IGlzQm9vbGVhblBy
ZWRpY3Rpb24obV9qaXQuZ2V0UHJlZGljdGlvbihub2RlLmNoaWxkMSgpKSk7CiAgICAgCiAgICAg
ICAgIGlmIChwcmVkaWN0Qm9vbGVhbikgewpAQCAtMTk2NSw2ICsxOTY1LDExIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgY29tcGlsZVZhbHVlVG9J
bnQzMihub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgICAgICAKKyAgICBjYXNlIElu
dDMyVG9Eb3VibGU6IHsKKyAgICAgICAgY29tcGlsZUludDMyVG9Eb3VibGUobm9kZSk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KIAogICAgIGNhc2UgVmFsdWVBZGQ6CiAgICAgY2FzZSBBcml0aEFk
ZDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCShyZXZpc2lvbiAxMTIwMTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI4NCw2ICsxMjg0LDEwIEBA
IFZhbHVlUmVjb3ZlcnkgU3BlY3VsYXRpdmVKSVQ6OmNvbXB1dGVWYWwKICAgICAgICAgICAgIC8v
IFRyeSB0byBzZWUgaWYgdGhlcmUgaXMgYW4gYWx0ZXJuYXRlIG5vZGUgdGhhdCB3b3VsZCBjb250
YWluIHRoZSB2YWx1ZSB3ZSB3YW50LgogICAgICAgICAgICAgLy8gVGhlcmUgYXJlIGZvdXIgcG9z
c2liaWxpdGllczoKICAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBJbnQzMlRvRG91Ymxl
OiBXZSBjYW4gdXNlIHRoaXMgaW4gcGxhY2Ugb2YgdGhlIG9yaWdpbmFsIG5vZGUsIGJ1dAorICAg
ICAgICAgICAgLy8gICAgd2UnZCByYXRoZXIgbm90OyBzbyB3ZSB1c2UgaXQgb25seSBpZiBpdCBp
cyB0aGUgb25seSByZW1haW5pbmcKKyAgICAgICAgICAgIC8vICAgIGxpdmUgdmVyc2lvbi4KKyAg
ICAgICAgICAgIC8vCiAgICAgICAgICAgICAvLyBWYWx1ZVRvSW50MzI6IElmIHRoZSBvbmx5IHJl
bWFpbmluZyBsaXZlIHZlcnNpb24gb2YgdGhlIHZhbHVlIGlzCiAgICAgICAgICAgICAvLyAgICBW
YWx1ZVRvSW50MzIsIHRoZW4gd2UgY2FuIHVzZSBpdC4KICAgICAgICAgICAgIC8vCkBAIC0xMzA2
LDYgKzEzMTAsNyBAQCBWYWx1ZVJlY292ZXJ5IFNwZWN1bGF0aXZlSklUOjpjb21wdXRlVmFsCiAg
ICAgICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAgICAgaWYgKCFmb3VuZCkgeworICAgICAg
ICAgICAgICAgIE5vZGVJbmRleCBpbnQzMlRvRG91YmxlSW5kZXggPSBOb05vZGU7CiAgICAgICAg
ICAgICAgICAgTm9kZUluZGV4IHZhbHVlVG9JbnQzMkluZGV4ID0gTm9Ob2RlOwogICAgICAgICAg
ICAgICAgIE5vZGVJbmRleCB1aW50MzJUb051bWJlckluZGV4ID0gTm9Ob2RlOwogICAgICAgICAg
ICAgCkBAIC0xMzE5LDYgKzEzMjQsOSBAQCBWYWx1ZVJlY292ZXJ5IFNwZWN1bGF0aXZlSklUOjpj
b21wdXRlVmFsCiAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLmNoaWxkMVVuY2hlY2tlZCgp
ICE9IHZhbHVlU291cmNlLm5vZGVJbmRleCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS5vcCgpKSB7CisgICAgICAg
ICAgICAgICAgICAgIGNhc2UgSW50MzJUb0RvdWJsZToKKyAgICAgICAgICAgICAgICAgICAgICAg
IGludDMyVG9Eb3VibGVJbmRleCA9IGluZm8ubm9kZUluZGV4KCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBWYWx1ZVRvSW50MzI6CiAg
ICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZVRvSW50MzJJbmRleCA9IGluZm8ubm9kZUluZGV4
KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTEzMzEsNyArMTMzOSw5IEBA
IFZhbHVlUmVjb3ZlcnkgU3BlY3VsYXRpdmVKSVQ6OmNvbXB1dGVWYWwKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBOb2RlSW5kZXggbm9kZUluZGV4VG9V
c2U7Ci0gICAgICAgICAgICAgICAgaWYgKHZhbHVlVG9JbnQzMkluZGV4ICE9IE5vTm9kZSkKKyAg
ICAgICAgICAgICAgICBpZiAoaW50MzJUb0RvdWJsZUluZGV4ICE9IE5vTm9kZSkKKyAgICAgICAg
ICAgICAgICAgICAgbm9kZUluZGV4VG9Vc2UgPSBpbnQzMlRvRG91YmxlSW5kZXg7CisgICAgICAg
ICAgICAgICAgZWxzZSBpZiAodmFsdWVUb0ludDMySW5kZXggIT0gTm9Ob2RlKQogICAgICAgICAg
ICAgICAgICAgICBub2RlSW5kZXhUb1VzZSA9IHZhbHVlVG9JbnQzMkluZGV4OwogICAgICAgICAg
ICAgICAgIGVsc2UgaWYgKHVpbnQzMlRvTnVtYmVySW5kZXggIT0gTm9Ob2RlKQogICAgICAgICAg
ICAgICAgICAgICBub2RlSW5kZXhUb1VzZSA9IHVpbnQzMlRvTnVtYmVySW5kZXg7CkBAIC0xNTM3
LDcgKzE1NDcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVUb0ludDMyCiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBHZW5lcmF0ZWRPcGVyYW5kRG91YmxlOiB7CiAgICAgICAg
ICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwotICAgICAgICAgICAgU3BlY3VsYXRlRG91
YmxlT3BlcmFuZCBvcDEodGhpcywgbm9kZS5jaGlsZDEoKSk7CisgICAgICAgICAgICBEb3VibGVP
cGVyYW5kIG9wMSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAgICAgIEZQUlJlZyBmcHIg
PSBvcDEuZnByKCk7CiAgICAgICAgICAgICBHUFJSZWcgZ3ByID0gcmVzdWx0LmdwcigpOwogICAg
ICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgdHJ1bmNhdGVkVG9JbnRlZ2VyID0gbV9qaXQuYnJh
bmNoVHJ1bmNhdGVEb3VibGVUb0ludDMyKGZwciwgZ3ByLCBKSVRDb21waWxlcjo6QnJhbmNoSWZU
cnVuY2F0ZVN1Y2Nlc3NmdWwpOwpAQCAtMTY3NCw2ICsxNjg0LDU2IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVVSW50MzJUb051bWIKICAgICBpbnRlZ2VyUmVzdWx0KHJlc3VsdC5ncHIo
KSwgbV9jb21waWxlSW5kZXgsIG9wMS5mb3JtYXQoKSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVJbnQzMlRvRG91YmxlKE5vZGUmIG5vZGUpCit7CisgICAgaWYgKGF0KG5vZGUu
Y2hpbGQxKCkpLmhhc0NvbnN0YW50KCkpIHsKKyAgICAgICAgQVNTRVJUKGlzSW50MzJDb25zdGFu
dChub2RlLmNoaWxkMSgpLmluZGV4KCkpKTsKKyAgICAgICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0
aGlzKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlz
KTsKKyAgICAgICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6SW1tUHRyKHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KHJlaW50ZXJwcmV0RG91YmxlVG9JbnRwdHIodmFsdWVPZk51bWJlckNvbnN0
YW50KG5vZGUuY2hpbGQxKCkuaW5kZXgoKSkpKSksIHRlbXAuZ3ByKCkpOworICAgICAgICBtX2pp
dC5tb3ZlUHRyVG9Eb3VibGUodGVtcC5ncHIoKSwgcmVzdWx0LmZwcigpKTsKKyNlbHNlCisgICAg
ICAgIG1faml0LmxvYWREb3VibGUoYWRkcmVzc09mRG91YmxlQ29uc3RhbnQobm9kZS5jaGlsZDEo
KS5pbmRleCgpKSwgcmVzdWx0LmZwcigpKTsKKyNlbmRpZgorICAgICAgICBkb3VibGVSZXN1bHQo
cmVzdWx0LmZwcigpLCBtX2NvbXBpbGVJbmRleCk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgCisgICAgaWYgKGlzSW50MzJQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxk
MSgpKS5tX3R5cGUpKSB7CisgICAgICAgIFNwZWN1bGF0ZUludGVnZXJPcGVyYW5kIG9wMSh0aGlz
LCBub2RlLmNoaWxkMSgpKTsKKyAgICAgICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAg
ICAgICAgbV9qaXQuY29udmVydEludDMyVG9Eb3VibGUob3AxLmdwcigpLCByZXN1bHQuZnByKCkp
OworICAgICAgICBkb3VibGVSZXN1bHQocmVzdWx0LmZwcigpLCBtX2NvbXBpbGVJbmRleCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgSlNWYWx1ZU9wZXJhbmQgb3AxKHRoaXMs
IG5vZGUuY2hpbGQxKCkpOworICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOworICAgIEZQUlRl
bXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgCisgICAgR1BSUmVnIG9wMUdQUiA9IG9wMS5ncHIo
KTsKKyAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7CisgICAgRlBSUmVnIHJlc3VsdEZQ
UiA9IHJlc3VsdC5mcHIoKTsKKyAgICAKKyAgICBKSVRDb21waWxlcjo6SnVtcCBpc0ludGVnZXIg
PSBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWws
IG9wMUdQUiwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKKyAgICAKKyAgICBzcGVj
dWxhdGlvbkNoZWNrKAorICAgICAgICBCYWRUeXBlLCBKU1ZhbHVlUmVncyhvcDFHUFIpLCBub2Rl
LmNoaWxkMSgpLAorICAgICAgICBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpa
ZXJvLCBvcDFHUFIsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikpOworICAgIAorICAg
IG1faml0Lm1vdmUob3AxR1BSLCB0ZW1wR1BSKTsKKyAgICB1bmJveERvdWJsZSh0ZW1wR1BSLCBy
ZXN1bHRGUFIpOworICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7Cisg
ICAgCisgICAgaXNJbnRlZ2VyLmxpbmsoJm1faml0KTsKKyAgICBtX2ppdC5jb252ZXJ0SW50MzJU
b0RvdWJsZShvcDFHUFIsIHJlc3VsdEZQUik7CisgICAgZG9uZS5saW5rKCZtX2ppdCk7CisgICAg
CisgICAgZG91YmxlUmVzdWx0KHJlc3VsdEZQUiwgbV9jb21waWxlSW5kZXgpOworfQorCiBzdGF0
aWMgZG91YmxlIGNsYW1wRG91YmxlVG9CeXRlKGRvdWJsZSBkKQogewogICAgIGQgKz0gMC41OwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAko
cmV2aXNpb24gMTEyMDEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzMyLDYgKzE3MzIsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgY29tcGlsZUdldEJ5VmFsT25TdHJpbmcoTm9kZSYpOwogICAgIHZvaWQgY29tcGls
ZVZhbHVlVG9JbnQzMihOb2RlJik7CiAgICAgdm9pZCBjb21waWxlVUludDMyVG9OdW1iZXIoTm9k
ZSYpOworICAgIHZvaWQgY29tcGlsZUludDMyVG9Eb3VibGUoTm9kZSYpOwogICAgIHZvaWQgY29t
cGlsZUdldEJ5VmFsT25CeXRlQXJyYXkoTm9kZSYpOwogICAgIHZvaWQgY29tcGlsZVB1dEJ5VmFs
Rm9yQnl0ZUFycmF5KEdQUlJlZyBiYXNlLCBHUFJSZWcgcHJvcGVydHksIE5vZGUmKTsKICAgICB2
b2lkIGNvbXBpbGVBZGQoTm9kZSYpOwpAQCAtMTk4NCw2ICsxOTg1LDcgQEAgcHVibGljOgogI2Vu
ZGlmCiAgICAgewogICAgICAgICBBU1NFUlQobV9qaXQpOworICAgICAgICBBU1NFUlQodXNlLnVz
ZUtpbmQoKSAhPSBEb3VibGVVc2UpOwogICAgICAgICBpZiAoaml0LT5pc0ZpbGxlZChtX2luZGV4
KSkKICAgICAgICAgICAgIGdwcigpOwogICAgIH0KQEAgLTIwMzMsNiArMjAzNSwxNSBAQCBwdWJs
aWM6CiAgICAgICAgICwgbV9mcHJPckludmFsaWQoSW52YWxpZEZQUlJlZykKICAgICB7CiAgICAg
ICAgIEFTU0VSVChtX2ppdCk7CisgICAgICAgIAorICAgICAgICAvLyBUaGlzIGlzIGNvdW50ZXIt
aW50dWl0aXZlIGJ1dCBjb3JyZWN0LiBEb3VibGVPcGVyYW5kIGlzIGludGVuZGVkIHRvCisgICAg
ICAgIC8vIGJlIHVzZWQgb25seSB3aGVuIHlvdSdyZSBhIG5vZGUgdGhhdCBpcyBoYXBweSB0byBh
Y2NlcHQgYW4gdW50eXBlZAorICAgICAgICAvLyB2YWx1ZSwgYnV0IHdpbGwgc3BlY2lhbC1jYXNl
IGZvciBkb3VibGVzICh1c2luZyBEb3VibGVPcGVyYW5kKSBpZiB0aGUKKyAgICAgICAgLy8gdmFs
dWUgaGFwcGVuZWQgdG8gYWxyZWFkeSBiZSByZXByZXNlbnRlZCBhcyBhIGRvdWJsZS4gVGhlIGlt
cGxpY2F0aW9uCisgICAgICAgIC8vIGlzIHRoYXQgeW91IHdpbGwgbm90IHRyeSB0byBmb3JjZSB0
aGUgdmFsdWUgdG8gYmVjb21lIGEgZG91YmxlIGlmIGl0CisgICAgICAgIC8vIGlzIG5vdCBvbmUg
YWxyZWFkeS4KKyAgICAgICAgQVNTRVJUKHVzZS51c2VLaW5kKCkgIT0gRG91YmxlVXNlKTsKKyAg
ICAgICAgCiAgICAgICAgIGlmIChqaXQtPmlzRmlsbGVkRG91YmxlKG1faW5kZXgpKQogICAgICAg
ICAgICAgZnByKCk7CiAgICAgfQpAQCAtMjA3OCw2ICsyMDg5LDcgQEAgcHVibGljOgogI2VuZGlm
CiAgICAgewogICAgICAgICBBU1NFUlQobV9qaXQpOworICAgICAgICBBU1NFUlQodXNlLnVzZUtp
bmQoKSAhPSBEb3VibGVVc2UpOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIGlmIChqaXQt
PmlzRmlsbGVkKG1faW5kZXgpKQogICAgICAgICAgICAgZ3ByKCk7CkBAIC0yMTg4LDYgKzIyMDAs
NyBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9ncHJPckludmFsaWQoSW52YWxpZEdQUlJlZykKICAg
ICB7CiAgICAgICAgIEFTU0VSVChtX2ppdCk7CisgICAgICAgIEFTU0VSVCh1c2UudXNlS2luZCgp
ICE9IERvdWJsZVVzZSk7CiAgICAgICAgIGlmIChqaXQtPmlzRmlsbGVkKG1faW5kZXgpKQogICAg
ICAgICAgICAgZ3ByKCk7CiAgICAgfQpAQCAtMjM2MCw2ICsyMzczLDcgQEAgcHVibGljOgogI2Vu
ZGlmCiAgICAgewogICAgICAgICBBU1NFUlQobV9qaXQpOworICAgICAgICBBU1NFUlQodXNlLnVz
ZUtpbmQoKSAhPSBEb3VibGVVc2UpOwogICAgICAgICBpZiAoaml0LT5pc0ZpbGxlZChtX2luZGV4
KSkKICAgICAgICAgICAgIGdwcigpOwogICAgIH0KQEAgLTI0MDQsNiArMjQxOCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgLCBtX2dwck9ySW52YWxpZChJbnZhbGlkR1BSUmVnKQogICAgIHsKICAgICAg
ICAgQVNTRVJUKG1faml0KTsKKyAgICAgICAgQVNTRVJUKHVzZS51c2VLaW5kKCkgIT0gRG91Ymxl
VXNlKTsKICAgICAgICAgaWYgKGppdC0+aXNGaWxsZWQobV9pbmRleCkpCiAgICAgICAgICAgICBn
cHIoKTsKICAgICB9CkBAIC0yNDQ1LDYgKzI0NjAsNyBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9m
cHJPckludmFsaWQoSW52YWxpZEZQUlJlZykKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2ppdCk7
CisgICAgICAgIEFTU0VSVCh1c2UudXNlS2luZCgpID09IERvdWJsZVVzZSk7CiAgICAgICAgIGlm
IChqaXQtPmlzRmlsbGVkKG1faW5kZXgpKQogICAgICAgICAgICAgZnByKCk7CiAgICAgfQpAQCAt
MjQ4MSw2ICsyNDk3LDcgQEAgcHVibGljOgogICAgICAgICAsIG1fZ3ByT3JJbnZhbGlkKEludmFs
aWRHUFJSZWcpCiAgICAgewogICAgICAgICBBU1NFUlQobV9qaXQpOworICAgICAgICBBU1NFUlQo
dXNlLnVzZUtpbmQoKSAhPSBEb3VibGVVc2UpOwogICAgICAgICBpZiAoaml0LT5pc0ZpbGxlZCht
X2luZGV4KSkKICAgICAgICAgICAgIGdwcigpOwogICAgIH0KQEAgLTI1MjIsNiArMjUzOSw3IEBA
IHB1YmxpYzoKICAgICAgICAgLCBtX2dwck9ySW52YWxpZChJbnZhbGlkR1BSUmVnKQogICAgIHsK
ICAgICAgICAgQVNTRVJUKG1faml0KTsKKyAgICAgICAgQVNTRVJUKHVzZS51c2VLaW5kKCkgIT0g
RG91YmxlVXNlKTsKICAgICAgICAgaWYgKGppdC0+aXNGaWxsZWQobV9pbmRleCkpCiAgICAgICAg
ICAgICBncHIoKTsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133673</attachid>
            <date>2012-03-25 00:52:09 -0700</date>
            <delta_ts>2012-03-25 15:35:37 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>inttodouble_patch_5.diff</filename>
            <type>text/plain</type>
            <size>34155</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTEyMDI0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkxIEBA
CisyMDEyLTAzLTI1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIGludC10by1kb3VibGUgY29udmVyc2lvbiBzaG91bGQgYmUgcmV2ZWFsZWQgdG8gQ1NFCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjEzNQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgVGhp
cyBpbnRyb2R1Y2VzIHRoZSBub3Rpb24gb2YgYW4gSW50MzJUb0RvdWJsZSBub2RlLCB3aGljaCBp
cyBpbmplY3RlZAorICAgICAgICBpbnRvIHRoZSBncmFwaCBhbnl0aW1lIHdlIGtub3cgdGhhdCB3
ZSBoYXZlIGEgZG91YmxlIHVzZSBvZiBhIG5vZGUgdGhhdAorICAgICAgICB3YXMgcHJlZGljdGVk
IGludGVnZXIuIFRoZSBJbnQzMlRvRG91YmxlIHNpbXBsaWZpZXMgZG91YmxlIHNwZWN1bGF0aW9u
CisgICAgICAgIG9uIGludGVnZXJzIGJ5IHNraXBwaW5nIHRoZSBwYXRoIHRoYXQgd291bGQgdW5i
b3ggZG91YmxlcywgaWYgd2Uga25vdworICAgICAgICB0aGF0IHRoZSB2YWx1ZSBpcyBhbHJlYWR5
IHByb3ZlbiB0byBiZSBhbiBpbnRlZ2VyLiBJdCBhbGxvd3MgaW50ZWdlciB0bworICAgICAgICBk
b3VibGUgY29udmVyc2lvbnMgdG8gYmUgc3ViamVjdGVkIHRvIGNvbW1vbiBzdWJleHByZXNzaW9u
IGVsaW1pbmF0aW9uCisgICAgICAgIChDU0UpIGJ5IGFsbG93aW5nIHRoZSBDU0UgcGhhc2UgdG8g
c2VlIHdoZXJlIHRoZXNlIGNvbnZlcnNpb25zIGFyZQorICAgICAgICBvY2N1cnJpbmcuIEZpbmFs
bHksIGl0IGFsbG93cyB1cyB0byBzZWUgd2hlbiBhIGNvbnN0YW50IGlzIGJlaW5nIHVzZWQKKyAg
ICAgICAgYXMgYm90aCBhIGRvdWJsZSBhbmQgYW4gaW50ZWdlci4gVGhpcyBpcyBhIGJpdCBvZGQs
IHNpbmNlIGl0IG1lYW5zIHRoYXQKKyAgICAgICAgc29tZXRpbWVzIGEgZG91YmxlIHVzZSBvZiBh
IGNvbnN0YW50IHdpbGwgbm90IHJlZmVyIGRpcmVjdGx5IHRvIHRoZQorICAgICAgICBjb25zdGFu
dC4gVGhpcyBzaG91bGQgbm90IGNhdXNlIHByb2JsZW1zLCBmb3Igbm93LCBidXQgaXQgbWF5IHJl
cXVpcmUKKyAgICAgICAgc29tZSBjYW5vbml6YWxpemF0aW9uIGluIHRoZSBmdXR1cmUgaWYgd2Ug
d2FudCB0byBzdXBwb3J0IHN0cmVuZ3RoCisgICAgICAgIHJlZHVjdGlvbnMgb2YgZG91YmxlIG9w
ZXJhdGlvbnMgYmFzZWQgb24gY29uc3RhbnRzLgorICAgICAgICAKKyAgICAgICAgVG8gYWxsb3cg
aW5qZWN0aW9uIG9mIG5vZGVzIGludG8gdGhlIGdyYXBoLCB0aGlzIGNoYW5nZSBpbnRyb2R1Y2Vz
IHRoZQorICAgICAgICBERkc6Okluc2VydGlvblNldCwgd2hpY2ggaXMgYSB3YXkgb2YgbGF6aWx5
IGluc2VydGluZyBlbGVtZW50cyBpbnRvIGEKKyAgICAgICAgbGlzdC4gVGhpcyBhbGxvd3MgdGhl
IEZpeHVwUGhhc2UgdG8gcmVtYWluIE8oTikgZGVzcGl0ZSBwZXJmb3JtaW5nCisgICAgICAgIG11
bHRpcGxlIGluamVjdGlvbnMgaW4gYSBzaW5nbGUgYmFzaWMgYmxvY2suIFdpdGhvdXQgdGhlIElu
c2VydGlvblNldCwKKyAgICAgICAgZWFjaCBpbmplY3Rpb24gd291bGQgcmVxdWlyZSBwZXJmb3Jt
aW5nIGFuIGluc2VydGlvbiBpbnRvIGEgdmVjdG9yLAorICAgICAgICB3aGljaCBpcyBPKE4pLCBs
ZWFkaW5nIHRvIE8oTl4yKSBwZXJmb3JtYW5jZSBvdmVyYWxsLiBXaXRoIHRoZQorICAgICAgICBJ
bnNlcnRpb25TZXQsIGVhY2ggaW5qZWN0aW9uIHNpbXBseSByZWNvcmRzIHdoYXQgaW5zZXJ0aW9u
IHdvdWxkIGhhdmUKKyAgICAgICAgYmVlbiBwZXJmb3JtZWQsIGFuZCBhbGwgaW5zZXJ0aW9ucyBh
cmUgcGVyZm9ybWVkIGF0IG9uY2UgKHZpYQorICAgICAgICBJbnNlcnRpb25TZXQ6OmV4ZWN1dGUp
IGFmdGVyIHByb2Nlc3Npbmcgb2YgYSBiYXNpYyBibG9jayBpcyBjb21wbGV0ZWQuCisKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGJ5dGVjb2RlL1ByZWRpY3RlZFR5cGUuaDoKKyAgICAgICAgKEpTQzo6aXNBY3Rpb25hYmxlSW50
TXV0YWJsZUFycmF5UHJlZGljdGlvbik6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpp
c0FjdGlvbmFibGVGbG9hdE11dGFibGVBcnJheVByZWRpY3Rpb24pOgorICAgICAgICAoSlNDOjpp
c0FjdGlvbmFibGVUeXBlZE11dGFibGVBcnJheVByZWRpY3Rpb24pOgorICAgICAgICAoSlNDOjpp
c0FjdGlvbmFibGVNdXRhYmxlQXJyYXlQcmVkaWN0aW9uKToKKyAgICAgICAgKiBkZmcvREZHQWJz
dHJhY3RTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RTdGF0ZTo6ZXhlY3V0
ZSk6CisgICAgICAgICogZGZnL0RGR0NTRVBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpD
U0VQaGFzZTo6cGVyZm9ybU5vZGVDU0UpOgorICAgICAgICAqIGRmZy9ERkdDb21tb24uaDoKKyAg
ICAgICAgKEpTQzo6REZHOjp1c2VLaW5kVG9TdHJpbmcpOgorICAgICAgICAoREZHKToKKyAgICAg
ICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFz
ZTo6cnVuKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cEJsb2NrKToKKyAg
ICAgICAgKEZpeHVwUGhhc2UpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVw
Tm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4RG91YmxlRWRnZSk6Cisg
ICAgICAgICogZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6ZHVt
cCk6CisgICAgICAgICogZGZnL0RGR0luc2VydGlvblNldC5oOiBBZGRlZC4KKyAgICAgICAgKERG
Ryk6CisgICAgICAgIChJbnNlcnRpb24pOgorICAgICAgICAoSlNDOjpERkc6Okluc2VydGlvbjo6
SW5zZXJ0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpJbnNlcnRpb246OmluZGV4KToKKyAgICAg
ICAgKEpTQzo6REZHOjpJbnNlcnRpb246OmVsZW1lbnQpOgorICAgICAgICAoSW5zZXJ0aW9uU2V0
KToKKyAgICAgICAgKEpTQzo6REZHOjpJbnNlcnRpb25TZXQ6Okluc2VydGlvblNldCk6CisgICAg
ICAgIChKU0M6OkRGRzo6SW5zZXJ0aW9uU2V0OjphcHBlbmQpOgorICAgICAgICAoSlNDOjpERkc6
Okluc2VydGlvblNldDo6ZXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6Cisg
ICAgICAgIChERkcpOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnBy
b3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcHV0ZVZhbHVlUmVjb3ZlcnlGb3IpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVUb0ludDMyKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUludDMyVG9Eb3VibGUpOgor
ICAgICAgICAoREZHKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAg
ICAgKFNwZWN1bGF0aXZlSklUKToKKyAgICAgICAgKEpTQzo6REZHOjpJbnRlZ2VyT3BlcmFuZDo6
SW50ZWdlck9wZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6OkRvdWJsZU9wZXJhbmQ6OkRvdWJs
ZU9wZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6OkpTVmFsdWVPcGVyYW5kOjpKU1ZhbHVlT3Bl
cmFuZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3RvcmFnZU9wZXJhbmQ6OlN0b3JhZ2VPcGVyYW5k
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGVJbnRlZ2VyT3BlcmFuZDo6U3BlY3VsYXRl
SW50ZWdlck9wZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZVN0cmljdEludDMy
T3BlcmFuZDo6U3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGVEb3VibGVPcGVyYW5kOjpTcGVjdWxhdGVEb3VibGVPcGVyYW5kKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGVDZWxsT3BlcmFuZDo6U3BlY3VsYXRlQ2VsbE9wZXJhbmQp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZUJvb2xlYW5PcGVyYW5kOjpTcGVjdWxhdGVC
b29sZWFuT3BlcmFuZCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUpOgorCiAyMDEyLTAzLTI0ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0Bh
cHBsZS5jb20+CiAKICAgICAgICAgREZHIDY0LWJpdCBCcmFuY2ggaW1wbGVtZW50YXRpb24gc2hv
dWxkIG5vdCBiZSBjcmVhdGluZyBhIEpTVmFsdWVPcGVyYW5kIHRoYXQKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMTIwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtNzQsNiArNzQsNyBAQAogCQkwRjI0MkRBNzEzRjNCMUU4MDA3QURENEMgLyogV2Vh
a1JlZmVyZW5jZUhhcnZlc3Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYyNDJEQTUxM0YzQjFCQjAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2
ZXN0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwRjJCREMxNTE1MUM1RDREMDBDRDg5MTAgLyogREZHRml4dXBQaGFzZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJCREMxMjE1MUM1RDRBMDBD
RDg5MTAgLyogREZHRml4dXBQaGFzZS5jcHAgKi87IH07CiAJCTBGMkJEQzE2MTUxQzVENEYwMENE
ODkxMCAvKiBERkdGaXh1cFBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjJCREMxMzE1MUM1RDRBMDBDRDg5MTAgLyogREZHRml4dXBQaGFzZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMkJE
QzIxMTUxRTgwM0IwMENEODkxMCAvKiBERkdJbnNlcnRpb25TZXQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkJEQzFGMTUxRTgwMzgwMENEODkxMCAv
KiBERkdJbnNlcnRpb25TZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkwRjJDNTU2RjE0NzM4RjMxMDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzU1NkUx
NDczOEYyRTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjJDNTU3MDE0NzM4RjM1MDAxMjFFNEYgLyog
REZHQ29kZUJsb2Nrcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjJDNTU2RDE0NzM4RjJFMDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5jcHAgKi87
IH07CiAJCTBGNDI2QTQ4MTQ2MENCQjMwMDEzMUY4RiAvKiBWYWx1ZVJlY292ZXJ5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQyNkE0NTE0NjBDQkFC
MDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC03MjQsNiArNzI1LDcgQEAKIAkJMEYyNDJEQTUxM0YzQjFC
QjAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjJCREMxMjE1MUM1RDRBMDBDRDg5MTAgLyogREZHRml4dXBQaGFzZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdGaXh1cFBoYXNlLmNw
cDsgcGF0aCA9IGRmZy9ERkdGaXh1cFBoYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEYyQkRDMTMxNTFDNUQ0QTAwQ0Q4OTEwIC8qIERGR0ZpeHVwUGhhc2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHRml4dXBQaGFzZS5oOyBwYXRoID0gZGZnL0RG
R0ZpeHVwUGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQkRDMUYxNTFF
ODAzODAwQ0Q4OTEwIC8qIERGR0luc2VydGlvblNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBERkdJbnNlcnRpb25TZXQuaDsgcGF0aCA9IGRmZy9ERkdJbnNlcnRpb25TZXQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyQzU1NkQxNDczOEYyRTAwMTIxRTRG
IC8qIERGR0NvZGVCbG9ja3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gREZHQ29kZUJsb2Nrcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkM1
NTZFMTQ3MzhGMkUwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERGR0NvZGVCbG9ja3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEY0MjZBNDUxNDYwQ0JBQjAwMTMxRjhGIC8qIFZhbHVlUmVjb3ZlcnkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmFsdWVSZWNvdmVyeS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTk5NCw2ICsxOTk2LDcgQEAKIAkJCQk4NkFFNkM0QzEzNkExMUU0
MDA5NjMwMTIgLyogREZHR1BSSW5mby5oICovLAogCQkJCTg2RUM5REI3MTMyOERGODIwMDJCMkFE
NyAvKiBERkdHcmFwaC5jcHAgKi8sCiAJCQkJODZFQzlEQjgxMzI4REY4MjAwMkIyQUQ3IC8qIERG
R0dyYXBoLmggKi8sCisJCQkJMEYyQkRDMUYxNTFFODAzODAwQ0Q4OTEwIC8qIERGR0luc2VydGlv
blNldC5oICovLAogCQkJCTg2RUM5REJCMTMyOERGODIwMDJCMkFENyAvKiBERkdKSVRDb21waWxl
ci5jcHAgKi8sCiAJCQkJODZFQzlEQkMxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0pJVENvbXBpbGVy
LmggKi8sCiAJCQkJODZFQ0EzRTkxMzJERUYxQzAwMkIyQUQ3IC8qIERGR05vZGUuaCAqLywKQEAg
LTI1MDEsNiArMjUwNCw3IEBACiAJCQkJMEZBNTgxQkIxNTBFOTUzMDAwQjlBMkQ5IC8qIERGR05v
ZGVGbGFncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBNTgxQkMxNTBFOTUzMDAwQjlBMkQ5IC8q
IERGR05vZGVUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCREMxNjE1MUM1RDRGMDBDRDg5
MTAgLyogREZHRml4dXBQaGFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyQkRDMjExNTFFODAz
QjAwQ0Q4OTEwIC8qIERGR0luc2VydGlvblNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlZGljdGVkVHlwZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVkaWN0ZWRUeXBlLmgJKHJldmlzaW9u
IDExMjAyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVkaWN0ZWRUeXBl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE1OSwxMCArMTU5LDkgQEAgaW5saW5lIGJvb2wgaXNGbG9h
dDY0QXJyYXlQcmVkaWN0aW9uKFByZQogICAgIHJldHVybiB2YWx1ZSA9PSBQcmVkaWN0RmxvYXQ2
NEFycmF5OwogfQogCi1pbmxpbmUgYm9vbCBpc0FjdGlvbmFibGVNdXRhYmxlQXJyYXlQcmVkaWN0
aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCitpbmxpbmUgYm9vbCBpc0FjdGlvbmFibGVJbnRNdXRh
YmxlQXJyYXlQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIGlz
QXJyYXlQcmVkaWN0aW9uKHZhbHVlKQotICAgICAgICB8fCBpc0J5dGVBcnJheVByZWRpY3Rpb24o
dmFsdWUpCisgICAgcmV0dXJuIGlzQnl0ZUFycmF5UHJlZGljdGlvbih2YWx1ZSkKICNpZiBDUFUo
WDg2KSB8fCBDUFUoWDg2XzY0KQogICAgICAgICB8fCBpc0ludDhBcnJheVByZWRpY3Rpb24odmFs
dWUpCiAgICAgICAgIHx8IGlzSW50MTZBcnJheVByZWRpY3Rpb24odmFsdWUpCkBAIC0xNzEsMTMg
KzE3MCwzMCBAQCBpbmxpbmUgYm9vbCBpc0FjdGlvbmFibGVNdXRhYmxlQXJyYXlQcmVkCiAgICAg
ICAgIHx8IGlzVWludDhBcnJheVByZWRpY3Rpb24odmFsdWUpCiAgICAgICAgIHx8IGlzVWludDhD
bGFtcGVkQXJyYXlQcmVkaWN0aW9uKHZhbHVlKQogICAgICAgICB8fCBpc1VpbnQxNkFycmF5UHJl
ZGljdGlvbih2YWx1ZSkKLSAgICAgICAgfHwgaXNVaW50MzJBcnJheVByZWRpY3Rpb24odmFsdWUp
CisgICAgICAgIHx8IGlzVWludDMyQXJyYXlQcmVkaWN0aW9uKHZhbHVlKTsKK30KKworaW5saW5l
IGJvb2wgaXNBY3Rpb25hYmxlRmxvYXRNdXRhYmxlQXJyYXlQcmVkaWN0aW9uKFByZWRpY3RlZFR5
cGUgdmFsdWUpCit7CisgICAgcmV0dXJuIGZhbHNlCiAjaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82
NCkKICAgICAgICAgfHwgaXNGbG9hdDMyQXJyYXlQcmVkaWN0aW9uKHZhbHVlKQogI2VuZGlmCiAg
ICAgICAgIHx8IGlzRmxvYXQ2NEFycmF5UHJlZGljdGlvbih2YWx1ZSk7CiB9CiAKK2lubGluZSBi
b29sIGlzQWN0aW9uYWJsZVR5cGVkTXV0YWJsZUFycmF5UHJlZGljdGlvbihQcmVkaWN0ZWRUeXBl
IHZhbHVlKQoreworICAgIHJldHVybiBpc0FjdGlvbmFibGVJbnRNdXRhYmxlQXJyYXlQcmVkaWN0
aW9uKHZhbHVlKQorICAgICAgICB8fCBpc0FjdGlvbmFibGVGbG9hdE11dGFibGVBcnJheVByZWRp
Y3Rpb24odmFsdWUpOworfQorCitpbmxpbmUgYm9vbCBpc0FjdGlvbmFibGVNdXRhYmxlQXJyYXlQ
cmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCit7CisgICAgcmV0dXJuIGlzQXJyYXlQcmVk
aWN0aW9uKHZhbHVlKQorICAgICAgICB8fCBpc0FjdGlvbmFibGVUeXBlZE11dGFibGVBcnJheVBy
ZWRpY3Rpb24odmFsdWUpOworfQorCiBpbmxpbmUgYm9vbCBpc0FjdGlvbmFibGVBcnJheVByZWRp
Y3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1ZSkKIHsKICAgICByZXR1cm4gaXNTdHJpbmdQcmVkaWN0
aW9uKHZhbHVlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0
YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0U3RhdGUuY3BwCShyZXZpc2lvbiAxMTIwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDAsNiArMzAwLDEx
IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAgICAgICAgCiAg
ICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoUHJlZGljdEludDMyKTsKICAgICAgICAgYnJl
YWs7CisgICAgICAgIAorICAgIGNhc2UgSW50MzJUb0RvdWJsZToKKyAgICAgICAgZm9yTm9kZShu
b2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdE51bWJlcik7CisgICAgICAgIGZvck5vZGUobm9k
ZUluZGV4KS5zZXQoUHJlZGljdERvdWJsZSk7CisgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
CiAgICAgY2FzZSBWYWx1ZUFkZDoKICAgICBjYXNlIEFyaXRoQWRkOiB7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAkocmV2aXNpb24gMTEyMDI0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU4Nyw2ICs1ODcsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldFN0cmluZ0xlbmd0
aDoKICAgICAgICAgY2FzZSBTdHJpbmdDaGFyQXQ6CiAgICAgICAgIGNhc2UgU3RyaW5nQ2hhckNv
ZGVBdDoKKyAgICAgICAgY2FzZSBJbnQzMlRvRG91YmxlOgogICAgICAgICAgICAgc2V0UmVwbGFj
ZW1lbnQocHVyZUNTRShub2RlKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCShyZXZpc2lvbiAxMTIwMjQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC05Nyw5ICs5NywyMyBAQCBzdHJ1Y3QgTm9kZUluZGV4VHJhaXRzIHsKIAogZW51bSBVc2VL
aW5kIHsKICAgICBVbnR5cGVkVXNlLAorICAgIERvdWJsZVVzZSwKICAgICBMYXN0VXNlS2luZCAv
LyBNdXN0IGFsd2F5cyBiZSB0aGUgbGFzdCBlbnRyeSBpbiB0aGUgZW51bSwgYXMgaXQgaXMgdXNl
ZCB0byBkZW5vdGUgdGhlIG51bWJlciBvZiBlbnVtIGVsZW1lbnRzLgogfTsKIAoraW5saW5lIGNv
bnN0IGNoYXIqIHVzZUtpbmRUb1N0cmluZyhVc2VLaW5kIHVzZUtpbmQpCit7CisgICAgc3dpdGNo
ICh1c2VLaW5kKSB7CisgICAgY2FzZSBVbnR5cGVkVXNlOgorICAgICAgICByZXR1cm4gIiI7Cisg
ICAgY2FzZSBEb3VibGVVc2U6CisgICAgICAgIHJldHVybiAiZCI7CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30K
KwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJl
dmlzaW9uIDExMjAyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoREZHX0pJ
VCkKIAogI2luY2x1ZGUgIkRGR0dyYXBoLmgiCisjaW5jbHVkZSAiREZHSW5zZXJ0aW9uU2V0Lmgi
CiAjaW5jbHVkZSAiREZHUGhhc2UuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcg
ewpAQCAtNDIsMTEgKzQzLDIwIEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIHJ1bigpCiAgICAg
ewotICAgICAgICBmb3IgKG1fY29tcGlsZUluZGV4ID0gMDsgbV9jb21waWxlSW5kZXggPCBtX2dy
YXBoLnNpemUoKTsgKyttX2NvbXBpbGVJbmRleCkKLSAgICAgICAgICAgIGZpeHVwTm9kZShtX2dy
YXBoW21fY29tcGlsZUluZGV4XSk7CisgICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4
ID0gMDsgYmxvY2tJbmRleCA8IG1fZ3JhcGgubV9ibG9ja3Muc2l6ZSgpOyArK2Jsb2NrSW5kZXgp
CisgICAgICAgICAgICBmaXh1cEJsb2NrKG1fZ3JhcGgubV9ibG9ja3NbYmxvY2tJbmRleF0uZ2V0
KCkpOwogICAgIH0KIAogcHJpdmF0ZToKKyAgICB2b2lkIGZpeHVwQmxvY2soQmFzaWNCbG9jayog
YmxvY2spCisgICAgeworICAgICAgICBmb3IgKG1faW5kZXhJbkJsb2NrID0gMDsgbV9pbmRleElu
QmxvY2sgPCBibG9jay0+c2l6ZSgpOyArK21faW5kZXhJbkJsb2NrKSB7CisgICAgICAgICAgICBt
X2NvbXBpbGVJbmRleCA9IGJsb2NrLT5hdChtX2luZGV4SW5CbG9jayk7CisgICAgICAgICAgICBm
aXh1cE5vZGUobV9ncmFwaFttX2NvbXBpbGVJbmRleF0pOworICAgICAgICB9CisgICAgICAgIG1f
aW5zZXJ0aW9uU2V0LmV4ZWN1dGUoKmJsb2NrKTsKKyAgICB9CisgICAgCiAgICAgdm9pZCBmaXh1
cE5vZGUoTm9kZSYgbm9kZSkKICAgICB7CiAgICAgICAgIGlmICghbm9kZS5zaG91bGRHZW5lcmF0
ZSgpKQpAQCAtMTUyLDExICsxNjIsMTMwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICAgICAgCisgICAgICAgIGNhc2UgQ29tcGFyZUVxOgorICAgICAg
ICBjYXNlIENvbXBhcmVMZXNzOgorICAgICAgICBjYXNlIENvbXBhcmVMZXNzRXE6CisgICAgICAg
IGNhc2UgQ29tcGFyZUdyZWF0ZXI6CisgICAgICAgIGNhc2UgQ29tcGFyZUdyZWF0ZXJFcToKKyAg
ICAgICAgY2FzZSBDb21wYXJlU3RyaWN0RXE6IHsKKyAgICAgICAgICAgIGlmIChOb2RlOjpzaG91
bGRTcGVjdWxhdGVJbnRlZ2VyKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0sIG1fZ3JhcGhbbm9kZS5j
aGlsZDIoKV0pKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKCFOb2Rl
OjpzaG91bGRTcGVjdWxhdGVOdW1iZXIobV9ncmFwaFtub2RlLmNoaWxkMSgpXSwgbV9ncmFwaFtu
b2RlLmNoaWxkMigpXSkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBmaXhE
b3VibGVFZGdlKDApOworICAgICAgICAgICAgZml4RG91YmxlRWRnZSgxKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBMb2dpY2FsTm90
OiB7CisgICAgICAgICAgICBpZiAobV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVjdWxh
dGVJbnRlZ2VyKCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAoIW1f
Z3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlTnVtYmVyKCkpCisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBmaXhEb3VibGVFZGdlKDApOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEJyYW5jaDogewor
ICAgICAgICAgICAgaWYgKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlSW50
ZWdlcigpKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKCFtX2dyYXBo
W25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZU51bWJlcigpKQorICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgZml4RG91YmxlRWRnZSgwKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBTZXRMb2NhbDogeworICAg
ICAgICAgICAgaWYgKG1fZ3JhcGguaXNDYXB0dXJlZChub2RlLmxvY2FsKCkpKQorICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKCFub2RlLnZhcmlhYmxlQWNjZXNzRGF0YSgp
LT5zaG91bGRVc2VEb3VibGVGb3JtYXQoKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGZpeERvdWJsZUVkZ2UoMCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgICAgICAgICAgCisgICAgICAgIGNhc2UgQXJpdGhBZGQ6CisgICAgICAgIGNhc2UgVmFsdWVB
ZGQ6IHsKKyAgICAgICAgICAgIGlmIChtX2dyYXBoLmFkZFNob3VsZFNwZWN1bGF0ZUludGVnZXIo
bm9kZSkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAoIU5vZGU6OnNo
b3VsZFNwZWN1bGF0ZU51bWJlcihtX2dyYXBoW25vZGUuY2hpbGQxKCldLCBtX2dyYXBoW25vZGUu
Y2hpbGQyKCldKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGZpeERvdWJs
ZUVkZ2UoMCk7CisgICAgICAgICAgICBmaXhEb3VibGVFZGdlKDEpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEFyaXRoU3ViOiB7Cisg
ICAgICAgICAgICBpZiAobV9ncmFwaC5hZGRTaG91bGRTcGVjdWxhdGVJbnRlZ2VyKG5vZGUpCisg
ICAgICAgICAgICAgICAgJiYgbm9kZS5jYW5TcGVjdWxhdGVJbnRlZ2VyKCkpCisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBmaXhEb3VibGVFZGdlKDApOworICAgICAgICAgICAg
Zml4RG91YmxlRWRnZSgxKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
ICAgICAKKyAgICAgICAgY2FzZSBBcml0aE5lZ2F0ZTogeworICAgICAgICAgICAgaWYgKG1fZ3Jh
cGgubmVnYXRlU2hvdWxkU3BlY3VsYXRlSW50ZWdlcihub2RlKSkKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGZpeERvdWJsZUVkZ2UoMCk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNhc2UgQXJpdGhNaW46CisgICAgICAg
IGNhc2UgQXJpdGhNYXg6CisgICAgICAgIGNhc2UgQXJpdGhNdWw6CisgICAgICAgIGNhc2UgQXJp
dGhEaXY6CisgICAgICAgIGNhc2UgQXJpdGhNb2Q6IHsKKyAgICAgICAgICAgIGlmIChOb2RlOjpz
aG91bGRTcGVjdWxhdGVJbnRlZ2VyKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0sIG1fZ3JhcGhbbm9k
ZS5jaGlsZDIoKV0pCisgICAgICAgICAgICAgICAgJiYgbm9kZS5jYW5TcGVjdWxhdGVJbnRlZ2Vy
KCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBmaXhEb3VibGVFZGdlKDAp
OworICAgICAgICAgICAgZml4RG91YmxlRWRnZSgxKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBBcml0aEFiczogeworICAgICAgICAg
ICAgaWYgKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlSW50ZWdlcigpCisg
ICAgICAgICAgICAgICAgJiYgbm9kZS5jYW5TcGVjdWxhdGVJbnRlZ2VyKCkpCisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBmaXhEb3VibGVFZGdlKDApOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEFyaXRoU3FydDog
eworICAgICAgICAgICAgZml4RG91YmxlRWRnZSgwKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBQdXRCeVZhbDogeworICAgICAgICAg
ICAgaWYgKCFtX2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKSB8fCAhbV9ncmFwaFtu
b2RlLmNoaWxkMigpXS5wcmVkaWN0aW9uKCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBpZiAoIW1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0uc2hvdWxkU3BlY3VsYXRlSW50ZWdl
cigpKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKGlzQWN0aW9uYWJs
ZUludE11dGFibGVBcnJheVByZWRpY3Rpb24obV9ncmFwaFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0
aW9uKCkpKSB7CisgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGhbbm9kZS5jaGlsZDMoKV0uaXND
b25zdGFudCgpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBp
ZiAobV9ncmFwaFtub2RlLmNoaWxkMygpXS5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyKCkpCisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGZpeERvdWJsZUVkZ2UoMik7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAo
aXNBY3Rpb25hYmxlRmxvYXRNdXRhYmxlQXJyYXlQcmVkaWN0aW9uKG1fZ3JhcGhbbm9kZS5jaGls
ZDEoKV0ucHJlZGljdGlvbigpKSkgeworICAgICAgICAgICAgICAgIGZpeERvdWJsZUVkZ2UoMik7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogCiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9W
RVJCT1NFKQorICAgICAgICBpZiAoIShub2RlLmZsYWdzKCkgJiBOb2RlSGFzVmFyQXJncykpIHsK
KyAgICAgICAgICAgIGRhdGFMb2coIm5ldyBjaGlsZHJlbjogIik7CisgICAgICAgICAgICBub2Rl
LmR1bXBDaGlsZHJlbihXVEY6OmRhdGFGaWxlKCkpOworICAgICAgICB9CiAgICAgICAgIGRhdGFM
b2coIlxuIik7CiAjZW5kaWYKICAgICB9CkBAIC0xNzksNyArMzA4LDM5IEBAIHByaXZhdGU6CiAg
ICAgICAgIGVkZ2UgPSBuZXdFZGdlOwogICAgIH0KICAgICAKKyAgICB2b2lkIGZpeERvdWJsZUVk
Z2UodW5zaWduZWQgY2hpbGRJbmRleCkKKyAgICB7CisgICAgICAgIE5vZGUmIHNvdXJjZSA9IG1f
Z3JhcGhbbV9jb21waWxlSW5kZXhdOworICAgICAgICBFZGdlJiBlZGdlID0gc291cmNlLmNoaWxk
cmVuLmNoaWxkKGNoaWxkSW5kZXgpOworICAgICAgICAKKyAgICAgICAgaWYgKCFtX2dyYXBoW2Vk
Z2VdLnNob3VsZFNwZWN1bGF0ZUludGVnZXIoKSkgeworICAgICAgICAgICAgZWRnZS5zZXRVc2VL
aW5kKERvdWJsZVVzZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIE5vZGVJbmRleCByZXN1bHRJbmRleCA9IChOb2RlSW5kZXgpbV9ncmFwaC5zaXpl
KCk7CisgICAgICAgIAorI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkK
KyAgICAgICAgZGF0YUxvZygiKHJlcGxhY2luZyBAJXUtPkAldSB3aXRoIEAldS0+QCV1KSAiLAor
ICAgICAgICAgICAgICAgIG1fY29tcGlsZUluZGV4LCBlZGdlLmluZGV4KCksIG1fY29tcGlsZUlu
ZGV4LCByZXN1bHRJbmRleCk7CisjZW5kaWYKKyAgICAgICAgCisgICAgICAgIC8vIEZpeCB0aGUg
ZWRnZSB1cCBoZXJlIGJlY2F1c2UgaXQncyBhIHJlZmVyZW5jZSB0aGF0IHdpbGwgYmUgY2xvYmJl
cmVkIGJ5CisgICAgICAgIC8vIHRoZSBhcHBlbmQoKSBiZWxvdy4KKyAgICAgICAgTm9kZUluZGV4
IG9sZEluZGV4ID0gZWRnZS5pbmRleCgpOworICAgICAgICBlZGdlID0gRWRnZShyZXN1bHRJbmRl
eCwgRG91YmxlVXNlKTsKKworICAgICAgICBtX2dyYXBoLmFwcGVuZChOb2RlKEludDMyVG9Eb3Vi
bGUsIHNvdXJjZS5jb2RlT3JpZ2luLCBvbGRJbmRleCkpOworICAgICAgICBtX2luc2VydGlvblNl
dC5hcHBlbmQobV9pbmRleEluQmxvY2ssIHJlc3VsdEluZGV4KTsKKyAgICAgICAgCisgICAgICAg
IE5vZGUmIGludDMyVG9Eb3VibGUgPSBtX2dyYXBoW3Jlc3VsdEluZGV4XTsKKyAgICAgICAgaW50
MzJUb0RvdWJsZS5wcmVkaWN0KFByZWRpY3REb3VibGUpOworICAgICAgICBpbnQzMlRvRG91Ymxl
LnJlZigpOworICAgIH0KKyAgICAKKyAgICB1bnNpZ25lZCBtX2luZGV4SW5CbG9jazsKICAgICBO
b2RlSW5kZXggbV9jb21waWxlSW5kZXg7CisgICAgSW5zZXJ0aW9uU2V0PE5vZGVJbmRleD4gbV9p
bnNlcnRpb25TZXQ7CiB9OwogICAgIAogdm9pZCBwZXJmb3JtRml4dXAoR3JhcGgmIGdyYXBoKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHJldmlzaW9uIDExMjAy
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNjMsMTUgKzE2MywzMCBAQCB2b2lkIEdyYXBoOjpkdW1wKE5vZGVJbmRleCBub2Rl
SW5kZXgpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiLCAiKTsKICAgICAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgICAgICBoYXNQcmludGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIGRhdGFMb2co
IkAldSVzIiwgbV92YXJBcmdDaGlsZHJlbltjaGlsZElkeF0uaW5kZXgoKSwgcHJlZGljdGlvblRv
QWJicmV2aWF0ZWRTdHJpbmcoYXQoY2hpbGRJZHgpLnByZWRpY3Rpb24oKSkpOworICAgICAgICAg
ICAgZGF0YUxvZygiJXNAJXUlcyIsCisgICAgICAgICAgICAgICAgICAgIHVzZUtpbmRUb1N0cmlu
ZyhtX3ZhckFyZ0NoaWxkcmVuW2NoaWxkSWR4XS51c2VLaW5kKCkpLAorICAgICAgICAgICAgICAg
ICAgICBtX3ZhckFyZ0NoaWxkcmVuW2NoaWxkSWR4XS5pbmRleCgpLAorICAgICAgICAgICAgICAg
ICAgICBwcmVkaWN0aW9uVG9BYmJyZXZpYXRlZFN0cmluZyhhdChjaGlsZElkeCkucHJlZGljdGlv
bigpKSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICBpZiAoISFub2RlLmNoaWxk
MSgpKQotICAgICAgICAgICAgZGF0YUxvZygiQCV1JXMiLCBub2RlLmNoaWxkMSgpLmluZGV4KCks
IHByZWRpY3Rpb25Ub0FiYnJldmlhdGVkU3RyaW5nKGF0KG5vZGUuY2hpbGQxKCkpLnByZWRpY3Rp
b24oKSkpOwotICAgICAgICBpZiAoISFub2RlLmNoaWxkMigpKQotICAgICAgICAgICAgZGF0YUxv
ZygiLCBAJXUlcyIsIG5vZGUuY2hpbGQyKCkuaW5kZXgoKSwgcHJlZGljdGlvblRvQWJicmV2aWF0
ZWRTdHJpbmcoYXQobm9kZS5jaGlsZDIoKSkucHJlZGljdGlvbigpKSk7Ci0gICAgICAgIGlmICgh
IW5vZGUuY2hpbGQzKCkpCi0gICAgICAgICAgICBkYXRhTG9nKCIsIEAldSVzIiwgbm9kZS5jaGls
ZDMoKS5pbmRleCgpLCBwcmVkaWN0aW9uVG9BYmJyZXZpYXRlZFN0cmluZyhhdChub2RlLmNoaWxk
MygpKS5wcmVkaWN0aW9uKCkpKTsKKyAgICAgICAgaWYgKCEhbm9kZS5jaGlsZDEoKSkgeworICAg
ICAgICAgICAgZGF0YUxvZygiJXNAJXUlcyIsCisgICAgICAgICAgICAgICAgICAgIHVzZUtpbmRU
b1N0cmluZyhub2RlLmNoaWxkMSgpLnVzZUtpbmQoKSksCisgICAgICAgICAgICAgICAgICAgIG5v
ZGUuY2hpbGQxKCkuaW5kZXgoKSwKKyAgICAgICAgICAgICAgICAgICAgcHJlZGljdGlvblRvQWJi
cmV2aWF0ZWRTdHJpbmcoYXQobm9kZS5jaGlsZDEoKSkucHJlZGljdGlvbigpKSk7CisgICAgICAg
IH0KKyAgICAgICAgaWYgKCEhbm9kZS5jaGlsZDIoKSkgeworICAgICAgICAgICAgZGF0YUxvZygi
LCAlc0AldSVzIiwKKyAgICAgICAgICAgICAgICAgICAgdXNlS2luZFRvU3RyaW5nKG5vZGUuY2hp
bGQyKCkudXNlS2luZCgpKSwKKyAgICAgICAgICAgICAgICAgICAgbm9kZS5jaGlsZDIoKS5pbmRl
eCgpLAorICAgICAgICAgICAgICAgICAgICBwcmVkaWN0aW9uVG9BYmJyZXZpYXRlZFN0cmluZyhh
dChub2RlLmNoaWxkMigpKS5wcmVkaWN0aW9uKCkpKTsKKyAgICAgICAgfQorICAgICAgICBpZiAo
ISFub2RlLmNoaWxkMygpKSB7CisgICAgICAgICAgICBkYXRhTG9nKCIsICVzQCV1JXMiLAorICAg
ICAgICAgICAgICAgICAgICB1c2VLaW5kVG9TdHJpbmcobm9kZS5jaGlsZDMoKS51c2VLaW5kKCkp
LAorICAgICAgICAgICAgICAgICAgICBub2RlLmNoaWxkMygpLmluZGV4KCksCisgICAgICAgICAg
ICAgICAgICAgIHByZWRpY3Rpb25Ub0FiYnJldmlhdGVkU3RyaW5nKGF0KG5vZGUuY2hpbGQzKCkp
LnByZWRpY3Rpb24oKSkpOworICAgICAgICB9CiAgICAgICAgIGhhc1ByaW50ZWQgPSAhIW5vZGUu
Y2hpbGQxKCk7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0lu
c2VydGlvblNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SW5zZXJ0aW9uU2V0LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0luc2VydGlvblNldC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDk4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgREZHSW5zZXJ0
aW9uU2V0X2gKKyNkZWZpbmUgREZHSW5zZWN0aW9uU2V0X2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0
Zm9ybS5oPgorCisjaWYgRU5BQkxFKERGR19KSVQpCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKwordGVtcGxhdGU8dHlwZW5hbWUg
RWxlbWVudFR5cGU+CitjbGFzcyBJbnNlcnRpb24geworcHVibGljOgorICAgIEluc2VydGlvbigp
IHsgfQorICAgIAorICAgIEluc2VydGlvbihzaXplX3QgaW5kZXgsIGNvbnN0IEVsZW1lbnRUeXBl
JiBlbGVtZW50KQorICAgICAgICA6IG1faW5kZXgoaW5kZXgpCisgICAgICAgICwgbV9lbGVtZW50
KGVsZW1lbnQpCisgICAgeworICAgIH0KKyAgICAKKyAgICBzaXplX3QgaW5kZXgoKSBjb25zdCB7
IHJldHVybiBtX2luZGV4OyB9CisgICAgY29uc3QgRWxlbWVudFR5cGUmIGVsZW1lbnQoKSBjb25z
dCB7IHJldHVybiBtX2VsZW1lbnQ7IH0KK3ByaXZhdGU6CisgICAgc2l6ZV90IG1faW5kZXg7Cisg
ICAgRWxlbWVudFR5cGUgbV9lbGVtZW50OworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVu
dFR5cGU+CitjbGFzcyBJbnNlcnRpb25TZXQgeworcHVibGljOgorICAgIEluc2VydGlvblNldCgp
IHsgfQorICAgIAorICAgIHZvaWQgYXBwZW5kKGNvbnN0IEluc2VydGlvbjxFbGVtZW50VHlwZT4m
IGluc2VydGlvbikKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV9pbnNlcnRpb25zLnNpemUoKSB8
fCBtX2luc2VydGlvbnMubGFzdCgpLmluZGV4KCkgPD0gaW5zZXJ0aW9uLmluZGV4KCkpOworICAg
ICAgICBtX2luc2VydGlvbnMuYXBwZW5kKGluc2VydGlvbik7CisgICAgfQorICAgIAorICAgIHZv
aWQgYXBwZW5kKHNpemVfdCBpbmRleCwgY29uc3QgRWxlbWVudFR5cGUmIGVsZW1lbnQpCisgICAg
eworICAgICAgICBhcHBlbmQoSW5zZXJ0aW9uPEVsZW1lbnRUeXBlPihpbmRleCwgZWxlbWVudCkp
OworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xsZWN0aW9uVHlwZT4KKyAg
ICB2b2lkIGV4ZWN1dGUoQ29sbGVjdGlvblR5cGUmIGNvbGxlY3Rpb24pCisgICAgeworICAgICAg
ICBpZiAoIW1faW5zZXJ0aW9ucy5zaXplKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IGNvbGxlY3Rpb24uZ3Jvdyhjb2xsZWN0aW9uLnNpemUoKSArIG1faW5zZXJ0aW9ucy5zaXplKCkp
OworICAgICAgICBzaXplX3QgbGFzdEluZGV4ID0gY29sbGVjdGlvbi5zaXplKCk7CisgICAgICAg
IGZvciAoc2l6ZV90IGluZGV4SW5JbnNlcnRpb25zID0gbV9pbnNlcnRpb25zLnNpemUoKTsgaW5k
ZXhJbkluc2VydGlvbnMtLTspIHsKKyAgICAgICAgICAgIEluc2VydGlvbjxFbGVtZW50VHlwZT4m
IGluc2VydGlvbiA9IG1faW5zZXJ0aW9uc1tpbmRleEluSW5zZXJ0aW9uc107CisgICAgICAgICAg
ICBzaXplX3QgZmlyc3RJbmRleCA9IGluc2VydGlvbi5pbmRleCgpICsgaW5kZXhJbkluc2VydGlv
bnM7CisgICAgICAgICAgICBzaXplX3QgaW5kZXhPZmZzZXQgPSBpbmRleEluSW5zZXJ0aW9ucyAr
IDE7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gbGFzdEluZGV4OyBpLS0gPiBmaXJzdElu
ZGV4OykKKyAgICAgICAgICAgICAgICBjb2xsZWN0aW9uW2ldID0gY29sbGVjdGlvbltpIC0gaW5k
ZXhPZmZzZXRdOworICAgICAgICAgICAgY29sbGVjdGlvbltmaXJzdEluZGV4XSA9IGluc2VydGlv
bi5lbGVtZW50KCk7CisgICAgICAgICAgICBsYXN0SW5kZXggPSBmaXJzdEluZGV4OworICAgICAg
ICB9CisgICAgICAgIG1faW5zZXJ0aW9ucy5yZXNpemUoMCk7CisgICAgfQorcHJpdmF0ZToKKyAg
ICBWZWN0b3I8SW5zZXJ0aW9uPEVsZW1lbnRUeXBlPiwgOD4gbV9pbnNlcnRpb25zOworfTsKKwor
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRworCisjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCisK
KyNlbmRpZiAvLyBERkdJbnNlcnRpb25TZXRfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlVHlwZS5oCShyZXZpc2lvbiAxMTIwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc1LDYgKzc1LDkgQEAg
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKFZhbHVlVG9JbnQzMiwg
Tm9kZVJlc3VsdEludDMyIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIC8qIFVzZWQgdG8gYm94
IHRoZSByZXN1bHQgb2YgVVJTaGlmdCBub2RlcyAocmVzdWx0IGhhcyByYW5nZSAwLi4yXjMyLTEp
LiAqL1wKICAgICBtYWNybyhVSW50MzJUb051bWJlciwgTm9kZVJlc3VsdE51bWJlcikgXAorICAg
IC8qIFVzZWQgdG8gY2FzdCBrbm93biBpbnRlZ2VycyB0byBkb3VibGVzLCBzbyBhcyB0byBzZXBh
cmF0ZSB0aGUgZG91YmxlIGZvcm0gKi9cCisgICAgLyogb2YgdGhlIHZhbHVlIGZyb20gdGhlIGlu
dGVnZXIgZm9ybS4gKi9cCisgICAgbWFjcm8oSW50MzJUb0RvdWJsZSwgTm9kZVJlc3VsdE51bWJl
cikgXAogICAgIFwKICAgICAvKiBOb2RlcyBmb3IgYXJpdGhtZXRpYyBvcGVyYXRpb25zLiAqL1wK
ICAgICBtYWNybyhBcml0aEFkZCwgTm9kZVJlc3VsdE51bWJlcikgXApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5jcHAJKHJldmlzaW9uIDExMjAyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
NjksNyArNTY5LDggQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXRVaW50MzJBcnJheUxlbmd0
aDoKICAgICAgICAgY2FzZSBHZXRGbG9hdDMyQXJyYXlMZW5ndGg6CiAgICAgICAgIGNhc2UgR2V0
RmxvYXQ2NEFycmF5TGVuZ3RoOgotICAgICAgICBjYXNlIEdldFN0cmluZ0xlbmd0aDogeworICAg
ICAgICBjYXNlIEdldFN0cmluZ0xlbmd0aDoKKyAgICAgICAgY2FzZSBJbnQzMlRvRG91YmxlOiB7
CiAgICAgICAgICAgICAvLyBUaGlzIG5vZGUgc2hvdWxkIG5ldmVyIGJlIHZpc2libGUgYXQgdGhp
cyBzdGFnZSBvZiBjb21waWxhdGlvbi4gSXQgaXMKICAgICAgICAgICAgIC8vIGluc2VydGVkIGJ5
IGZpeHVwKCksIHdoaWNoIGZvbGxvd3MgdGhpcyBwaGFzZS4KICAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAxMTIwMjQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xODc4LDYgKzE4NzgsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlJiBub2RlKQogICAgICAgICBjb21waWxlVmFsdWVUb0ludDMyKG5vZGUpOwogICAgICAgICBi
cmVhazsKICAgICB9CisgICAgICAgIAorICAgIGNhc2UgSW50MzJUb0RvdWJsZTogeworICAgICAg
ICBjb21waWxlSW50MzJUb0RvdWJsZShub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogCiAg
ICAgY2FzZSBWYWx1ZUFkZDoKICAgICBjYXNlIEFyaXRoQWRkOgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAx
MTIwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTY1LDYgKzE5NjUsMTEgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBjb21waWxlVmFsdWVUb0ludDMyKG5v
ZGUpOwogICAgICAgICBicmVhazsKICAgICB9CisgICAgICAgIAorICAgIGNhc2UgSW50MzJUb0Rv
dWJsZTogeworICAgICAgICBjb21waWxlSW50MzJUb0RvdWJsZShub2RlKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQogCiAgICAgY2FzZSBWYWx1ZUFkZDoKICAgICBjYXNlIEFyaXRoQWRkOgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJ
KHJldmlzaW9uIDExMjAyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjg0LDYgKzEyODQsMTAgQEAgVmFsdWVS
ZWNvdmVyeSBTcGVjdWxhdGl2ZUpJVDo6Y29tcHV0ZVZhbAogICAgICAgICAgICAgLy8gVHJ5IHRv
IHNlZSBpZiB0aGVyZSBpcyBhbiBhbHRlcm5hdGUgbm9kZSB0aGF0IHdvdWxkIGNvbnRhaW4gdGhl
IHZhbHVlIHdlIHdhbnQuCiAgICAgICAgICAgICAvLyBUaGVyZSBhcmUgZm91ciBwb3NzaWJpbGl0
aWVzOgogICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIEludDMyVG9Eb3VibGU6IFdlIGNh
biB1c2UgdGhpcyBpbiBwbGFjZSBvZiB0aGUgb3JpZ2luYWwgbm9kZSwgYnV0CisgICAgICAgICAg
ICAvLyAgICB3ZSdkIHJhdGhlciBub3Q7IHNvIHdlIHVzZSBpdCBvbmx5IGlmIGl0IGlzIHRoZSBv
bmx5IHJlbWFpbmluZworICAgICAgICAgICAgLy8gICAgbGl2ZSB2ZXJzaW9uLgorICAgICAgICAg
ICAgLy8KICAgICAgICAgICAgIC8vIFZhbHVlVG9JbnQzMjogSWYgdGhlIG9ubHkgcmVtYWluaW5n
IGxpdmUgdmVyc2lvbiBvZiB0aGUgdmFsdWUgaXMKICAgICAgICAgICAgIC8vICAgIFZhbHVlVG9J
bnQzMiwgdGhlbiB3ZSBjYW4gdXNlIGl0LgogICAgICAgICAgICAgLy8KQEAgLTEzMDYsNiArMTMx
MCw3IEBAIFZhbHVlUmVjb3ZlcnkgU3BlY3VsYXRpdmVKSVQ6OmNvbXB1dGVWYWwKICAgICAgICAg
ICAgIH0KICAgICAgICAgCiAgICAgICAgICAgICBpZiAoIWZvdW5kKSB7CisgICAgICAgICAgICAg
ICAgTm9kZUluZGV4IGludDMyVG9Eb3VibGVJbmRleCA9IE5vTm9kZTsKICAgICAgICAgICAgICAg
ICBOb2RlSW5kZXggdmFsdWVUb0ludDMySW5kZXggPSBOb05vZGU7CiAgICAgICAgICAgICAgICAg
Tm9kZUluZGV4IHVpbnQzMlRvTnVtYmVySW5kZXggPSBOb05vZGU7CiAgICAgICAgICAgICAKQEAg
LTEzMTksNiArMTMyNCw5IEBAIFZhbHVlUmVjb3ZlcnkgU3BlY3VsYXRpdmVKSVQ6OmNvbXB1dGVW
YWwKICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUuY2hpbGQxVW5jaGVja2VkKCkgIT0gdmFs
dWVTb3VyY2Uubm9kZUluZGV4KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLm9wKCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgY2FzZSBJbnQzMlRvRG91YmxlOgorICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJU
b0RvdWJsZUluZGV4ID0gaW5mby5ub2RlSW5kZXgoKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBjYXNlIFZhbHVlVG9JbnQzMjoKICAgICAgICAg
ICAgICAgICAgICAgICAgIHZhbHVlVG9JbnQzMkluZGV4ID0gaW5mby5ub2RlSW5kZXgoKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTMzMSw3ICsxMzM5LDkgQEAgVmFsdWVS
ZWNvdmVyeSBTcGVjdWxhdGl2ZUpJVDo6Y29tcHV0ZVZhbAogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgIE5vZGVJbmRleCBub2RlSW5kZXhUb1VzZTsKLSAg
ICAgICAgICAgICAgICBpZiAodmFsdWVUb0ludDMySW5kZXggIT0gTm9Ob2RlKQorICAgICAgICAg
ICAgICAgIGlmIChpbnQzMlRvRG91YmxlSW5kZXggIT0gTm9Ob2RlKQorICAgICAgICAgICAgICAg
ICAgICBub2RlSW5kZXhUb1VzZSA9IGludDMyVG9Eb3VibGVJbmRleDsKKyAgICAgICAgICAgICAg
ICBlbHNlIGlmICh2YWx1ZVRvSW50MzJJbmRleCAhPSBOb05vZGUpCiAgICAgICAgICAgICAgICAg
ICAgIG5vZGVJbmRleFRvVXNlID0gdmFsdWVUb0ludDMySW5kZXg7CiAgICAgICAgICAgICAgICAg
ZWxzZSBpZiAodWludDMyVG9OdW1iZXJJbmRleCAhPSBOb05vZGUpCiAgICAgICAgICAgICAgICAg
ICAgIG5vZGVJbmRleFRvVXNlID0gdWludDMyVG9OdW1iZXJJbmRleDsKQEAgLTE1MzcsNyArMTU0
Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZVRvSW50MzIKICAgICAgICAg
fQogICAgICAgICBjYXNlIEdlbmVyYXRlZE9wZXJhbmREb3VibGU6IHsKICAgICAgICAgICAgIEdQ
UlRlbXBvcmFyeSByZXN1bHQodGhpcyk7Ci0gICAgICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVy
YW5kIG9wMSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICAgICAgICAgIERvdWJsZU9wZXJhbmQg
b3AxKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICAgICAgRlBSUmVnIGZwciA9IG9wMS5m
cHIoKTsKICAgICAgICAgICAgIEdQUlJlZyBncHIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAgICAg
ICBKSVRDb21waWxlcjo6SnVtcCB0cnVuY2F0ZWRUb0ludGVnZXIgPSBtX2ppdC5icmFuY2hUcnVu
Y2F0ZURvdWJsZVRvSW50MzIoZnByLCBncHIsIEpJVENvbXBpbGVyOjpCcmFuY2hJZlRydW5jYXRl
U3VjY2Vzc2Z1bCk7CkBAIC0xNjc0LDYgKzE2ODQsNTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVVJbnQzMlRvTnVtYgogICAgIGludGVnZXJSZXN1bHQocmVzdWx0LmdwcigpLCBtX2Nv
bXBpbGVJbmRleCwgb3AxLmZvcm1hdCgpKTsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUludDMyVG9Eb3VibGUoTm9kZSYgbm9kZSkKK3sKKyAgICBpZiAoYXQobm9kZS5jaGlsZDEo
KSkuaGFzQ29uc3RhbnQoKSkgeworICAgICAgICBBU1NFUlQoaXNJbnQzMkNvbnN0YW50KG5vZGUu
Y2hpbGQxKCkuaW5kZXgoKSkpOworICAgICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwor
I2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOworICAg
ICAgICBtX2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4ocmVpbnRlcnByZXREb3VibGVUb0ludHB0cih2YWx1ZU9mTnVtYmVyQ29uc3RhbnQobm9k
ZS5jaGlsZDEoKS5pbmRleCgpKSkpKSwgdGVtcC5ncHIoKSk7CisgICAgICAgIG1faml0Lm1vdmVQ
dHJUb0RvdWJsZSh0ZW1wLmdwcigpLCByZXN1bHQuZnByKCkpOworI2Vsc2UKKyAgICAgICAgbV9q
aXQubG9hZERvdWJsZShhZGRyZXNzT2ZEb3VibGVDb25zdGFudChub2RlLmNoaWxkMSgpLmluZGV4
KCkpLCByZXN1bHQuZnByKCkpOworI2VuZGlmCisgICAgICAgIGRvdWJsZVJlc3VsdChyZXN1bHQu
ZnByKCksIG1fY29tcGlsZUluZGV4KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAg
ICBpZiAoaXNJbnQzMlByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1f
dHlwZSkpIHsKKyAgICAgICAgU3BlY3VsYXRlSW50ZWdlck9wZXJhbmQgb3AxKHRoaXMsIG5vZGUu
Y2hpbGQxKCkpOworICAgICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAgICBt
X2ppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShvcDEuZ3ByKCksIHJlc3VsdC5mcHIoKSk7CisgICAg
ICAgIGRvdWJsZVJlc3VsdChyZXN1bHQuZnByKCksIG1fY29tcGlsZUluZGV4KTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICAKKyAgICBKU1ZhbHVlT3BlcmFuZCBvcDEodGhpcywgbm9kZS5j
aGlsZDEoKSk7CisgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgRlBSVGVtcG9yYXJ5
IHJlc3VsdCh0aGlzKTsKKyAgICAKKyAgICBHUFJSZWcgb3AxR1BSID0gb3AxLmdwcigpOworICAg
IEdQUlJlZyB0ZW1wR1BSID0gdGVtcC5ncHIoKTsKKyAgICBGUFJSZWcgcmVzdWx0RlBSID0gcmVz
dWx0LmZwcigpOworICAgIAorICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzSW50ZWdlciA9IG1faml0
LmJyYW5jaFB0cigKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgb3AxR1BS
LCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOworICAgIAorICAgIHNwZWN1bGF0aW9u
Q2hlY2soCisgICAgICAgIEJhZFR5cGUsIEpTVmFsdWVSZWdzKG9wMUdQUiksIG5vZGUuY2hpbGQx
KCksCisgICAgICAgIG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIG9w
MUdQUiwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7CisgICAgCisgICAgbV9qaXQu
bW92ZShvcDFHUFIsIHRlbXBHUFIpOworICAgIHVuYm94RG91YmxlKHRlbXBHUFIsIHJlc3VsdEZQ
Uik7CisgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKKyAgICAKKyAg
ICBpc0ludGVnZXIubGluaygmbV9qaXQpOworICAgIG1faml0LmNvbnZlcnRJbnQzMlRvRG91Ymxl
KG9wMUdQUiwgcmVzdWx0RlBSKTsKKyAgICBkb25lLmxpbmsoJm1faml0KTsKKyAgICAKKyAgICBk
b3VibGVSZXN1bHQocmVzdWx0RlBSLCBtX2NvbXBpbGVJbmRleCk7Cit9CisKIHN0YXRpYyBkb3Vi
bGUgY2xhbXBEb3VibGVUb0J5dGUoZG91YmxlIGQpCiB7CiAgICAgZCArPSAwLjU7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lv
biAxMTIwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE3MzIsNiArMTczMiw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBjb21waWxlR2V0QnlWYWxPblN0cmluZyhOb2RlJik7CiAgICAgdm9pZCBjb21waWxlVmFsdWVU
b0ludDMyKE5vZGUmKTsKICAgICB2b2lkIGNvbXBpbGVVSW50MzJUb051bWJlcihOb2RlJik7Cisg
ICAgdm9pZCBjb21waWxlSW50MzJUb0RvdWJsZShOb2RlJik7CiAgICAgdm9pZCBjb21waWxlR2V0
QnlWYWxPbkJ5dGVBcnJheShOb2RlJik7CiAgICAgdm9pZCBjb21waWxlUHV0QnlWYWxGb3JCeXRl
QXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSYpOwogICAgIHZvaWQgY29t
cGlsZUFkZChOb2RlJik7CkBAIC0xOTg0LDYgKzE5ODUsNyBAQCBwdWJsaWM6CiAjZW5kaWYKICAg
ICB7CiAgICAgICAgIEFTU0VSVChtX2ppdCk7CisgICAgICAgIEFTU0VSVCh1c2UudXNlS2luZCgp
ICE9IERvdWJsZVVzZSk7CiAgICAgICAgIGlmIChqaXQtPmlzRmlsbGVkKG1faW5kZXgpKQogICAg
ICAgICAgICAgZ3ByKCk7CiAgICAgfQpAQCAtMjAzMyw2ICsyMDM1LDE1IEBAIHB1YmxpYzoKICAg
ICAgICAgLCBtX2Zwck9ySW52YWxpZChJbnZhbGlkRlBSUmVnKQogICAgIHsKICAgICAgICAgQVNT
RVJUKG1faml0KTsKKyAgICAgICAgCisgICAgICAgIC8vIFRoaXMgaXMgY291bnRlci1pbnR1aXRp
dmUgYnV0IGNvcnJlY3QuIERvdWJsZU9wZXJhbmQgaXMgaW50ZW5kZWQgdG8KKyAgICAgICAgLy8g
YmUgdXNlZCBvbmx5IHdoZW4geW91J3JlIGEgbm9kZSB0aGF0IGlzIGhhcHB5IHRvIGFjY2VwdCBh
biB1bnR5cGVkCisgICAgICAgIC8vIHZhbHVlLCBidXQgd2lsbCBzcGVjaWFsLWNhc2UgZm9yIGRv
dWJsZXMgKHVzaW5nIERvdWJsZU9wZXJhbmQpIGlmIHRoZQorICAgICAgICAvLyB2YWx1ZSBoYXBw
ZW5lZCB0byBhbHJlYWR5IGJlIHJlcHJlc2VudGVkIGFzIGEgZG91YmxlLiBUaGUgaW1wbGljYXRp
b24KKyAgICAgICAgLy8gaXMgdGhhdCB5b3Ugd2lsbCBub3QgdHJ5IHRvIGZvcmNlIHRoZSB2YWx1
ZSB0byBiZWNvbWUgYSBkb3VibGUgaWYgaXQKKyAgICAgICAgLy8gaXMgbm90IG9uZSBhbHJlYWR5
LgorICAgICAgICBBU1NFUlQodXNlLnVzZUtpbmQoKSAhPSBEb3VibGVVc2UpOworICAgICAgICAK
ICAgICAgICAgaWYgKGppdC0+aXNGaWxsZWREb3VibGUobV9pbmRleCkpCiAgICAgICAgICAgICBm
cHIoKTsKICAgICB9CkBAIC0yMDc4LDYgKzIwODksNyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB7
CiAgICAgICAgIEFTU0VSVChtX2ppdCk7CisgICAgICAgIEFTU0VSVCh1c2UudXNlS2luZCgpICE9
IERvdWJsZVVzZSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgaWYgKGppdC0+aXNGaWxs
ZWQobV9pbmRleCkpCiAgICAgICAgICAgICBncHIoKTsKQEAgLTIxODgsNiArMjIwMCw3IEBAIHB1
YmxpYzoKICAgICAgICAgLCBtX2dwck9ySW52YWxpZChJbnZhbGlkR1BSUmVnKQogICAgIHsKICAg
ICAgICAgQVNTRVJUKG1faml0KTsKKyAgICAgICAgQVNTRVJUKHVzZS51c2VLaW5kKCkgIT0gRG91
YmxlVXNlKTsKICAgICAgICAgaWYgKGppdC0+aXNGaWxsZWQobV9pbmRleCkpCiAgICAgICAgICAg
ICBncHIoKTsKICAgICB9CkBAIC0yMzYwLDYgKzIzNzMsNyBAQCBwdWJsaWM6CiAjZW5kaWYKICAg
ICB7CiAgICAgICAgIEFTU0VSVChtX2ppdCk7CisgICAgICAgIEFTU0VSVCh1c2UudXNlS2luZCgp
ICE9IERvdWJsZVVzZSk7CiAgICAgICAgIGlmIChqaXQtPmlzRmlsbGVkKG1faW5kZXgpKQogICAg
ICAgICAgICAgZ3ByKCk7CiAgICAgfQpAQCAtMjQwNCw2ICsyNDE4LDcgQEAgcHVibGljOgogICAg
ICAgICAsIG1fZ3ByT3JJbnZhbGlkKEludmFsaWRHUFJSZWcpCiAgICAgewogICAgICAgICBBU1NF
UlQobV9qaXQpOworICAgICAgICBBU1NFUlQodXNlLnVzZUtpbmQoKSAhPSBEb3VibGVVc2UpOwog
ICAgICAgICBpZiAoaml0LT5pc0ZpbGxlZChtX2luZGV4KSkKICAgICAgICAgICAgIGdwcigpOwog
ICAgIH0KQEAgLTI0NDUsNiArMjQ2MCw3IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2Zwck9ySW52
YWxpZChJbnZhbGlkRlBSUmVnKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1faml0KTsKKyAgICAg
ICAgQVNTRVJUKHVzZS51c2VLaW5kKCkgPT0gRG91YmxlVXNlKTsKICAgICAgICAgaWYgKGppdC0+
aXNGaWxsZWQobV9pbmRleCkpCiAgICAgICAgICAgICBmcHIoKTsKICAgICB9CkBAIC0yNDgxLDYg
KzI0OTcsNyBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9ncHJPckludmFsaWQoSW52YWxpZEdQUlJl
ZykKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2ppdCk7CisgICAgICAgIEFTU0VSVCh1c2UudXNl
S2luZCgpICE9IERvdWJsZVVzZSk7CiAgICAgICAgIGlmIChqaXQtPmlzRmlsbGVkKG1faW5kZXgp
KQogICAgICAgICAgICAgZ3ByKCk7CiAgICAgfQpAQCAtMjUyMiw2ICsyNTM5LDcgQEAgcHVibGlj
OgogICAgICAgICAsIG1fZ3ByT3JJbnZhbGlkKEludmFsaWRHUFJSZWcpCiAgICAgewogICAgICAg
ICBBU1NFUlQobV9qaXQpOworICAgICAgICBBU1NFUlQodXNlLnVzZUtpbmQoKSAhPSBEb3VibGVV
c2UpOwogICAgICAgICBpZiAoaml0LT5pc0ZpbGxlZChtX2luZGV4KSkKICAgICAgICAgICAgIGdw
cigpOwogICAgIH0K
</data>
<flag name="commit-queue"
          id="137733"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133695</attachid>
            <date>2012-03-25 15:35:37 -0700</date>
            <delta_ts>2012-03-25 15:58:14 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>inttodouble_patch_6.diff</filename>
            <type>text/plain</type>
            <size>35272</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTEyMDI0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkxIEBA
CisyMDEyLTAzLTI1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIGludC10by1kb3VibGUgY29udmVyc2lvbiBzaG91bGQgYmUgcmV2ZWFsZWQgdG8gQ1NFCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjEzNQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgVGhp
cyBpbnRyb2R1Y2VzIHRoZSBub3Rpb24gb2YgYW4gSW50MzJUb0RvdWJsZSBub2RlLCB3aGljaCBp
cyBpbmplY3RlZAorICAgICAgICBpbnRvIHRoZSBncmFwaCBhbnl0aW1lIHdlIGtub3cgdGhhdCB3
ZSBoYXZlIGEgZG91YmxlIHVzZSBvZiBhIG5vZGUgdGhhdAorICAgICAgICB3YXMgcHJlZGljdGVk
IGludGVnZXIuIFRoZSBJbnQzMlRvRG91YmxlIHNpbXBsaWZpZXMgZG91YmxlIHNwZWN1bGF0aW9u
CisgICAgICAgIG9uIGludGVnZXJzIGJ5IHNraXBwaW5nIHRoZSBwYXRoIHRoYXQgd291bGQgdW5i
b3ggZG91YmxlcywgaWYgd2Uga25vdworICAgICAgICB0aGF0IHRoZSB2YWx1ZSBpcyBhbHJlYWR5
IHByb3ZlbiB0byBiZSBhbiBpbnRlZ2VyLiBJdCBhbGxvd3MgaW50ZWdlciB0bworICAgICAgICBk
b3VibGUgY29udmVyc2lvbnMgdG8gYmUgc3ViamVjdGVkIHRvIGNvbW1vbiBzdWJleHByZXNzaW9u
IGVsaW1pbmF0aW9uCisgICAgICAgIChDU0UpIGJ5IGFsbG93aW5nIHRoZSBDU0UgcGhhc2UgdG8g
c2VlIHdoZXJlIHRoZXNlIGNvbnZlcnNpb25zIGFyZQorICAgICAgICBvY2N1cnJpbmcuIEZpbmFs
bHksIGl0IGFsbG93cyB1cyB0byBzZWUgd2hlbiBhIGNvbnN0YW50IGlzIGJlaW5nIHVzZWQKKyAg
ICAgICAgYXMgYm90aCBhIGRvdWJsZSBhbmQgYW4gaW50ZWdlci4gVGhpcyBpcyBhIGJpdCBvZGQs
IHNpbmNlIGl0IG1lYW5zIHRoYXQKKyAgICAgICAgc29tZXRpbWVzIGEgZG91YmxlIHVzZSBvZiBh
IGNvbnN0YW50IHdpbGwgbm90IHJlZmVyIGRpcmVjdGx5IHRvIHRoZQorICAgICAgICBjb25zdGFu
dC4gVGhpcyBzaG91bGQgbm90IGNhdXNlIHByb2JsZW1zLCBmb3Igbm93LCBidXQgaXQgbWF5IHJl
cXVpcmUKKyAgICAgICAgc29tZSBjYW5vbml6YWxpemF0aW9uIGluIHRoZSBmdXR1cmUgaWYgd2Ug
d2FudCB0byBzdXBwb3J0IHN0cmVuZ3RoCisgICAgICAgIHJlZHVjdGlvbnMgb2YgZG91YmxlIG9w
ZXJhdGlvbnMgYmFzZWQgb24gY29uc3RhbnRzLgorICAgICAgICAKKyAgICAgICAgVG8gYWxsb3cg
aW5qZWN0aW9uIG9mIG5vZGVzIGludG8gdGhlIGdyYXBoLCB0aGlzIGNoYW5nZSBpbnRyb2R1Y2Vz
IHRoZQorICAgICAgICBERkc6Okluc2VydGlvblNldCwgd2hpY2ggaXMgYSB3YXkgb2YgbGF6aWx5
IGluc2VydGluZyBlbGVtZW50cyBpbnRvIGEKKyAgICAgICAgbGlzdC4gVGhpcyBhbGxvd3MgdGhl
IEZpeHVwUGhhc2UgdG8gcmVtYWluIE8oTikgZGVzcGl0ZSBwZXJmb3JtaW5nCisgICAgICAgIG11
bHRpcGxlIGluamVjdGlvbnMgaW4gYSBzaW5nbGUgYmFzaWMgYmxvY2suIFdpdGhvdXQgdGhlIElu
c2VydGlvblNldCwKKyAgICAgICAgZWFjaCBpbmplY3Rpb24gd291bGQgcmVxdWlyZSBwZXJmb3Jt
aW5nIGFuIGluc2VydGlvbiBpbnRvIGEgdmVjdG9yLAorICAgICAgICB3aGljaCBpcyBPKE4pLCBs
ZWFkaW5nIHRvIE8oTl4yKSBwZXJmb3JtYW5jZSBvdmVyYWxsLiBXaXRoIHRoZQorICAgICAgICBJ
bnNlcnRpb25TZXQsIGVhY2ggaW5qZWN0aW9uIHNpbXBseSByZWNvcmRzIHdoYXQgaW5zZXJ0aW9u
IHdvdWxkIGhhdmUKKyAgICAgICAgYmVlbiBwZXJmb3JtZWQsIGFuZCBhbGwgaW5zZXJ0aW9ucyBh
cmUgcGVyZm9ybWVkIGF0IG9uY2UgKHZpYQorICAgICAgICBJbnNlcnRpb25TZXQ6OmV4ZWN1dGUp
IGFmdGVyIHByb2Nlc3Npbmcgb2YgYSBiYXNpYyBibG9jayBpcyBjb21wbGV0ZWQuCisKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGJ5dGVjb2RlL1ByZWRpY3RlZFR5cGUuaDoKKyAgICAgICAgKEpTQzo6aXNBY3Rpb25hYmxlSW50
TXV0YWJsZUFycmF5UHJlZGljdGlvbik6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpp
c0FjdGlvbmFibGVGbG9hdE11dGFibGVBcnJheVByZWRpY3Rpb24pOgorICAgICAgICAoSlNDOjpp
c0FjdGlvbmFibGVUeXBlZE11dGFibGVBcnJheVByZWRpY3Rpb24pOgorICAgICAgICAoSlNDOjpp
c0FjdGlvbmFibGVNdXRhYmxlQXJyYXlQcmVkaWN0aW9uKToKKyAgICAgICAgKiBkZmcvREZHQWJz
dHJhY3RTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RTdGF0ZTo6ZXhlY3V0
ZSk6CisgICAgICAgICogZGZnL0RGR0NTRVBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpD
U0VQaGFzZTo6cGVyZm9ybU5vZGVDU0UpOgorICAgICAgICAqIGRmZy9ERkdDb21tb24uaDoKKyAg
ICAgICAgKEpTQzo6REZHOjp1c2VLaW5kVG9TdHJpbmcpOgorICAgICAgICAoREZHKToKKyAgICAg
ICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFz
ZTo6cnVuKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cEJsb2NrKToKKyAg
ICAgICAgKEZpeHVwUGhhc2UpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVw
Tm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4RG91YmxlRWRnZSk6Cisg
ICAgICAgICogZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6ZHVt
cCk6CisgICAgICAgICogZGZnL0RGR0luc2VydGlvblNldC5oOiBBZGRlZC4KKyAgICAgICAgKERG
Ryk6CisgICAgICAgIChJbnNlcnRpb24pOgorICAgICAgICAoSlNDOjpERkc6Okluc2VydGlvbjo6
SW5zZXJ0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpJbnNlcnRpb246OmluZGV4KToKKyAgICAg
ICAgKEpTQzo6REZHOjpJbnNlcnRpb246OmVsZW1lbnQpOgorICAgICAgICAoSW5zZXJ0aW9uU2V0
KToKKyAgICAgICAgKEpTQzo6REZHOjpJbnNlcnRpb25TZXQ6Okluc2VydGlvblNldCk6CisgICAg
ICAgIChKU0M6OkRGRzo6SW5zZXJ0aW9uU2V0OjphcHBlbmQpOgorICAgICAgICAoSlNDOjpERkc6
Okluc2VydGlvblNldDo6ZXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6Cisg
ICAgICAgIChERkcpOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnBy
b3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcHV0ZVZhbHVlUmVjb3ZlcnlGb3IpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVUb0ludDMyKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUludDMyVG9Eb3VibGUpOgor
ICAgICAgICAoREZHKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAg
ICAgKFNwZWN1bGF0aXZlSklUKToKKyAgICAgICAgKEpTQzo6REZHOjpJbnRlZ2VyT3BlcmFuZDo6
SW50ZWdlck9wZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6OkRvdWJsZU9wZXJhbmQ6OkRvdWJs
ZU9wZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6OkpTVmFsdWVPcGVyYW5kOjpKU1ZhbHVlT3Bl
cmFuZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3RvcmFnZU9wZXJhbmQ6OlN0b3JhZ2VPcGVyYW5k
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGVJbnRlZ2VyT3BlcmFuZDo6U3BlY3VsYXRl
SW50ZWdlck9wZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZVN0cmljdEludDMy
T3BlcmFuZDo6U3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGVEb3VibGVPcGVyYW5kOjpTcGVjdWxhdGVEb3VibGVPcGVyYW5kKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGVDZWxsT3BlcmFuZDo6U3BlY3VsYXRlQ2VsbE9wZXJhbmQp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZUJvb2xlYW5PcGVyYW5kOjpTcGVjdWxhdGVC
b29sZWFuT3BlcmFuZCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUpOgorCiAyMDEyLTAzLTI0ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0Bh
cHBsZS5jb20+CiAKICAgICAgICAgREZHIDY0LWJpdCBCcmFuY2ggaW1wbGVtZW50YXRpb24gc2hv
dWxkIG5vdCBiZSBjcmVhdGluZyBhIEpTVmFsdWVPcGVyYW5kIHRoYXQKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMTIwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtNzQsNiArNzQsNyBAQAogCQkwRjI0MkRBNzEzRjNCMUU4MDA3QURENEMgLyogV2Vh
a1JlZmVyZW5jZUhhcnZlc3Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYyNDJEQTUxM0YzQjFCQjAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2
ZXN0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwRjJCREMxNTE1MUM1RDREMDBDRDg5MTAgLyogREZHRml4dXBQaGFzZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJCREMxMjE1MUM1RDRBMDBD
RDg5MTAgLyogREZHRml4dXBQaGFzZS5jcHAgKi87IH07CiAJCTBGMkJEQzE2MTUxQzVENEYwMENE
ODkxMCAvKiBERkdGaXh1cFBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjJCREMxMzE1MUM1RDRBMDBDRDg5MTAgLyogREZHRml4dXBQaGFzZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMkJE
QzIxMTUxRTgwM0IwMENEODkxMCAvKiBERkdJbnNlcnRpb25TZXQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkJEQzFGMTUxRTgwMzgwMENEODkxMCAv
KiBERkdJbnNlcnRpb25TZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkwRjJDNTU2RjE0NzM4RjMxMDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzU1NkUx
NDczOEYyRTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjJDNTU3MDE0NzM4RjM1MDAxMjFFNEYgLyog
REZHQ29kZUJsb2Nrcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjJDNTU2RDE0NzM4RjJFMDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5jcHAgKi87
IH07CiAJCTBGNDI2QTQ4MTQ2MENCQjMwMDEzMUY4RiAvKiBWYWx1ZVJlY292ZXJ5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQyNkE0NTE0NjBDQkFC
MDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC03MjQsNiArNzI1LDcgQEAKIAkJMEYyNDJEQTUxM0YzQjFC
QjAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjJCREMxMjE1MUM1RDRBMDBDRDg5MTAgLyogREZHRml4dXBQaGFzZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdGaXh1cFBoYXNlLmNw
cDsgcGF0aCA9IGRmZy9ERkdGaXh1cFBoYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEYyQkRDMTMxNTFDNUQ0QTAwQ0Q4OTEwIC8qIERGR0ZpeHVwUGhhc2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHRml4dXBQaGFzZS5oOyBwYXRoID0gZGZnL0RG
R0ZpeHVwUGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQkRDMUYxNTFF
ODAzODAwQ0Q4OTEwIC8qIERGR0luc2VydGlvblNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBERkdJbnNlcnRpb25TZXQuaDsgcGF0aCA9IGRmZy9ERkdJbnNlcnRpb25TZXQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyQzU1NkQxNDczOEYyRTAwMTIxRTRG
IC8qIERGR0NvZGVCbG9ja3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gREZHQ29kZUJsb2Nrcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkM1
NTZFMTQ3MzhGMkUwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERGR0NvZGVCbG9ja3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEY0MjZBNDUxNDYwQ0JBQjAwMTMxRjhGIC8qIFZhbHVlUmVjb3ZlcnkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmFsdWVSZWNvdmVyeS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTk5NCw2ICsxOTk2LDcgQEAKIAkJCQk4NkFFNkM0QzEzNkExMUU0
MDA5NjMwMTIgLyogREZHR1BSSW5mby5oICovLAogCQkJCTg2RUM5REI3MTMyOERGODIwMDJCMkFE
NyAvKiBERkdHcmFwaC5jcHAgKi8sCiAJCQkJODZFQzlEQjgxMzI4REY4MjAwMkIyQUQ3IC8qIERG
R0dyYXBoLmggKi8sCisJCQkJMEYyQkRDMUYxNTFFODAzODAwQ0Q4OTEwIC8qIERGR0luc2VydGlv
blNldC5oICovLAogCQkJCTg2RUM5REJCMTMyOERGODIwMDJCMkFENyAvKiBERkdKSVRDb21waWxl
ci5jcHAgKi8sCiAJCQkJODZFQzlEQkMxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0pJVENvbXBpbGVy
LmggKi8sCiAJCQkJODZFQ0EzRTkxMzJERUYxQzAwMkIyQUQ3IC8qIERGR05vZGUuaCAqLywKQEAg
LTI1MDEsNiArMjUwNCw3IEBACiAJCQkJMEZBNTgxQkIxNTBFOTUzMDAwQjlBMkQ5IC8qIERGR05v
ZGVGbGFncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBNTgxQkMxNTBFOTUzMDAwQjlBMkQ5IC8q
IERGR05vZGVUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCREMxNjE1MUM1RDRGMDBDRDg5
MTAgLyogREZHRml4dXBQaGFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyQkRDMjExNTFFODAz
QjAwQ0Q4OTEwIC8qIERGR0luc2VydGlvblNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlZGljdGVkVHlwZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVkaWN0ZWRUeXBlLmgJKHJldmlzaW9u
IDExMjAyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVkaWN0ZWRUeXBl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE1OSwxMCArMTU5LDkgQEAgaW5saW5lIGJvb2wgaXNGbG9h
dDY0QXJyYXlQcmVkaWN0aW9uKFByZQogICAgIHJldHVybiB2YWx1ZSA9PSBQcmVkaWN0RmxvYXQ2
NEFycmF5OwogfQogCi1pbmxpbmUgYm9vbCBpc0FjdGlvbmFibGVNdXRhYmxlQXJyYXlQcmVkaWN0
aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCitpbmxpbmUgYm9vbCBpc0FjdGlvbmFibGVJbnRNdXRh
YmxlQXJyYXlQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIGlz
QXJyYXlQcmVkaWN0aW9uKHZhbHVlKQotICAgICAgICB8fCBpc0J5dGVBcnJheVByZWRpY3Rpb24o
dmFsdWUpCisgICAgcmV0dXJuIGlzQnl0ZUFycmF5UHJlZGljdGlvbih2YWx1ZSkKICNpZiBDUFUo
WDg2KSB8fCBDUFUoWDg2XzY0KQogICAgICAgICB8fCBpc0ludDhBcnJheVByZWRpY3Rpb24odmFs
dWUpCiAgICAgICAgIHx8IGlzSW50MTZBcnJheVByZWRpY3Rpb24odmFsdWUpCkBAIC0xNzEsMTMg
KzE3MCwzMCBAQCBpbmxpbmUgYm9vbCBpc0FjdGlvbmFibGVNdXRhYmxlQXJyYXlQcmVkCiAgICAg
ICAgIHx8IGlzVWludDhBcnJheVByZWRpY3Rpb24odmFsdWUpCiAgICAgICAgIHx8IGlzVWludDhD
bGFtcGVkQXJyYXlQcmVkaWN0aW9uKHZhbHVlKQogICAgICAgICB8fCBpc1VpbnQxNkFycmF5UHJl
ZGljdGlvbih2YWx1ZSkKLSAgICAgICAgfHwgaXNVaW50MzJBcnJheVByZWRpY3Rpb24odmFsdWUp
CisgICAgICAgIHx8IGlzVWludDMyQXJyYXlQcmVkaWN0aW9uKHZhbHVlKTsKK30KKworaW5saW5l
IGJvb2wgaXNBY3Rpb25hYmxlRmxvYXRNdXRhYmxlQXJyYXlQcmVkaWN0aW9uKFByZWRpY3RlZFR5
cGUgdmFsdWUpCit7CisgICAgcmV0dXJuIGZhbHNlCiAjaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82
NCkKICAgICAgICAgfHwgaXNGbG9hdDMyQXJyYXlQcmVkaWN0aW9uKHZhbHVlKQogI2VuZGlmCiAg
ICAgICAgIHx8IGlzRmxvYXQ2NEFycmF5UHJlZGljdGlvbih2YWx1ZSk7CiB9CiAKK2lubGluZSBi
b29sIGlzQWN0aW9uYWJsZVR5cGVkTXV0YWJsZUFycmF5UHJlZGljdGlvbihQcmVkaWN0ZWRUeXBl
IHZhbHVlKQoreworICAgIHJldHVybiBpc0FjdGlvbmFibGVJbnRNdXRhYmxlQXJyYXlQcmVkaWN0
aW9uKHZhbHVlKQorICAgICAgICB8fCBpc0FjdGlvbmFibGVGbG9hdE11dGFibGVBcnJheVByZWRp
Y3Rpb24odmFsdWUpOworfQorCitpbmxpbmUgYm9vbCBpc0FjdGlvbmFibGVNdXRhYmxlQXJyYXlQ
cmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCit7CisgICAgcmV0dXJuIGlzQXJyYXlQcmVk
aWN0aW9uKHZhbHVlKQorICAgICAgICB8fCBpc0FjdGlvbmFibGVUeXBlZE11dGFibGVBcnJheVBy
ZWRpY3Rpb24odmFsdWUpOworfQorCiBpbmxpbmUgYm9vbCBpc0FjdGlvbmFibGVBcnJheVByZWRp
Y3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1ZSkKIHsKICAgICByZXR1cm4gaXNTdHJpbmdQcmVkaWN0
aW9uKHZhbHVlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0
YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0U3RhdGUuY3BwCShyZXZpc2lvbiAxMTIwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDAsNiArMzAwLDEx
IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAgICAgICAgCiAg
ICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoUHJlZGljdEludDMyKTsKICAgICAgICAgYnJl
YWs7CisgICAgICAgIAorICAgIGNhc2UgSW50MzJUb0RvdWJsZToKKyAgICAgICAgZm9yTm9kZShu
b2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdE51bWJlcik7CisgICAgICAgIGZvck5vZGUobm9k
ZUluZGV4KS5zZXQoUHJlZGljdERvdWJsZSk7CisgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
CiAgICAgY2FzZSBWYWx1ZUFkZDoKICAgICBjYXNlIEFyaXRoQWRkOiB7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAkocmV2aXNpb24gMTEyMDI0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU4Nyw2ICs1ODcsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldFN0cmluZ0xlbmd0
aDoKICAgICAgICAgY2FzZSBTdHJpbmdDaGFyQXQ6CiAgICAgICAgIGNhc2UgU3RyaW5nQ2hhckNv
ZGVBdDoKKyAgICAgICAgY2FzZSBJbnQzMlRvRG91YmxlOgogICAgICAgICAgICAgc2V0UmVwbGFj
ZW1lbnQocHVyZUNTRShub2RlKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCShyZXZpc2lvbiAxMTIwMjQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC05Nyw5ICs5NywyMyBAQCBzdHJ1Y3QgTm9kZUluZGV4VHJhaXRzIHsKIAogZW51bSBVc2VL
aW5kIHsKICAgICBVbnR5cGVkVXNlLAorICAgIERvdWJsZVVzZSwKICAgICBMYXN0VXNlS2luZCAv
LyBNdXN0IGFsd2F5cyBiZSB0aGUgbGFzdCBlbnRyeSBpbiB0aGUgZW51bSwgYXMgaXQgaXMgdXNl
ZCB0byBkZW5vdGUgdGhlIG51bWJlciBvZiBlbnVtIGVsZW1lbnRzLgogfTsKIAoraW5saW5lIGNv
bnN0IGNoYXIqIHVzZUtpbmRUb1N0cmluZyhVc2VLaW5kIHVzZUtpbmQpCit7CisgICAgc3dpdGNo
ICh1c2VLaW5kKSB7CisgICAgY2FzZSBVbnR5cGVkVXNlOgorICAgICAgICByZXR1cm4gIiI7Cisg
ICAgY2FzZSBEb3VibGVVc2U6CisgICAgICAgIHJldHVybiAiZCI7CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30K
KwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJl
dmlzaW9uIDExMjAyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoREZHX0pJ
VCkKIAogI2luY2x1ZGUgIkRGR0dyYXBoLmgiCisjaW5jbHVkZSAiREZHSW5zZXJ0aW9uU2V0Lmgi
CiAjaW5jbHVkZSAiREZHUGhhc2UuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcg
ewpAQCAtNDIsMTEgKzQzLDIwIEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIHJ1bigpCiAgICAg
ewotICAgICAgICBmb3IgKG1fY29tcGlsZUluZGV4ID0gMDsgbV9jb21waWxlSW5kZXggPCBtX2dy
YXBoLnNpemUoKTsgKyttX2NvbXBpbGVJbmRleCkKLSAgICAgICAgICAgIGZpeHVwTm9kZShtX2dy
YXBoW21fY29tcGlsZUluZGV4XSk7CisgICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4
ID0gMDsgYmxvY2tJbmRleCA8IG1fZ3JhcGgubV9ibG9ja3Muc2l6ZSgpOyArK2Jsb2NrSW5kZXgp
CisgICAgICAgICAgICBmaXh1cEJsb2NrKG1fZ3JhcGgubV9ibG9ja3NbYmxvY2tJbmRleF0uZ2V0
KCkpOwogICAgIH0KIAogcHJpdmF0ZToKKyAgICB2b2lkIGZpeHVwQmxvY2soQmFzaWNCbG9jayog
YmxvY2spCisgICAgeworICAgICAgICBmb3IgKG1faW5kZXhJbkJsb2NrID0gMDsgbV9pbmRleElu
QmxvY2sgPCBibG9jay0+c2l6ZSgpOyArK21faW5kZXhJbkJsb2NrKSB7CisgICAgICAgICAgICBt
X2NvbXBpbGVJbmRleCA9IGJsb2NrLT5hdChtX2luZGV4SW5CbG9jayk7CisgICAgICAgICAgICBm
aXh1cE5vZGUobV9ncmFwaFttX2NvbXBpbGVJbmRleF0pOworICAgICAgICB9CisgICAgICAgIG1f
aW5zZXJ0aW9uU2V0LmV4ZWN1dGUoKmJsb2NrKTsKKyAgICB9CisgICAgCiAgICAgdm9pZCBmaXh1
cE5vZGUoTm9kZSYgbm9kZSkKICAgICB7CiAgICAgICAgIGlmICghbm9kZS5zaG91bGRHZW5lcmF0
ZSgpKQpAQCAtMTUyLDExICsxNjIsMTMwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICAgICAgCisgICAgICAgIGNhc2UgQ29tcGFyZUVxOgorICAgICAg
ICBjYXNlIENvbXBhcmVMZXNzOgorICAgICAgICBjYXNlIENvbXBhcmVMZXNzRXE6CisgICAgICAg
IGNhc2UgQ29tcGFyZUdyZWF0ZXI6CisgICAgICAgIGNhc2UgQ29tcGFyZUdyZWF0ZXJFcToKKyAg
ICAgICAgY2FzZSBDb21wYXJlU3RyaWN0RXE6IHsKKyAgICAgICAgICAgIGlmIChOb2RlOjpzaG91
bGRTcGVjdWxhdGVJbnRlZ2VyKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0sIG1fZ3JhcGhbbm9kZS5j
aGlsZDIoKV0pKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKCFOb2Rl
OjpzaG91bGRTcGVjdWxhdGVOdW1iZXIobV9ncmFwaFtub2RlLmNoaWxkMSgpXSwgbV9ncmFwaFtu
b2RlLmNoaWxkMigpXSkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBmaXhE
b3VibGVFZGdlKDApOworICAgICAgICAgICAgZml4RG91YmxlRWRnZSgxKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBMb2dpY2FsTm90
OiB7CisgICAgICAgICAgICBpZiAobV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVjdWxh
dGVJbnRlZ2VyKCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAoIW1f
Z3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlTnVtYmVyKCkpCisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBmaXhEb3VibGVFZGdlKDApOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEJyYW5jaDogewor
ICAgICAgICAgICAgaWYgKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlSW50
ZWdlcigpKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKCFtX2dyYXBo
W25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZU51bWJlcigpKQorICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgZml4RG91YmxlRWRnZSgwKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBTZXRMb2NhbDogeworICAg
ICAgICAgICAgaWYgKG1fZ3JhcGguaXNDYXB0dXJlZChub2RlLmxvY2FsKCkpKQorICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKCFub2RlLnZhcmlhYmxlQWNjZXNzRGF0YSgp
LT5zaG91bGRVc2VEb3VibGVGb3JtYXQoKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGZpeERvdWJsZUVkZ2UoMCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgICAgICAgICAgCisgICAgICAgIGNhc2UgQXJpdGhBZGQ6CisgICAgICAgIGNhc2UgVmFsdWVB
ZGQ6IHsKKyAgICAgICAgICAgIGlmIChtX2dyYXBoLmFkZFNob3VsZFNwZWN1bGF0ZUludGVnZXIo
bm9kZSkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAoIU5vZGU6OnNo
b3VsZFNwZWN1bGF0ZU51bWJlcihtX2dyYXBoW25vZGUuY2hpbGQxKCldLCBtX2dyYXBoW25vZGUu
Y2hpbGQyKCldKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGZpeERvdWJs
ZUVkZ2UoMCk7CisgICAgICAgICAgICBmaXhEb3VibGVFZGdlKDEpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEFyaXRoU3ViOiB7Cisg
ICAgICAgICAgICBpZiAobV9ncmFwaC5hZGRTaG91bGRTcGVjdWxhdGVJbnRlZ2VyKG5vZGUpCisg
ICAgICAgICAgICAgICAgJiYgbm9kZS5jYW5TcGVjdWxhdGVJbnRlZ2VyKCkpCisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBmaXhEb3VibGVFZGdlKDApOworICAgICAgICAgICAg
Zml4RG91YmxlRWRnZSgxKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
ICAgICAKKyAgICAgICAgY2FzZSBBcml0aE5lZ2F0ZTogeworICAgICAgICAgICAgaWYgKG1fZ3Jh
cGgubmVnYXRlU2hvdWxkU3BlY3VsYXRlSW50ZWdlcihub2RlKSkKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGZpeERvdWJsZUVkZ2UoMCk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNhc2UgQXJpdGhNaW46CisgICAgICAg
IGNhc2UgQXJpdGhNYXg6CisgICAgICAgIGNhc2UgQXJpdGhNdWw6CisgICAgICAgIGNhc2UgQXJp
dGhEaXY6CisgICAgICAgIGNhc2UgQXJpdGhNb2Q6IHsKKyAgICAgICAgICAgIGlmIChOb2RlOjpz
aG91bGRTcGVjdWxhdGVJbnRlZ2VyKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0sIG1fZ3JhcGhbbm9k
ZS5jaGlsZDIoKV0pCisgICAgICAgICAgICAgICAgJiYgbm9kZS5jYW5TcGVjdWxhdGVJbnRlZ2Vy
KCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBmaXhEb3VibGVFZGdlKDAp
OworICAgICAgICAgICAgZml4RG91YmxlRWRnZSgxKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBBcml0aEFiczogeworICAgICAgICAg
ICAgaWYgKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlSW50ZWdlcigpCisg
ICAgICAgICAgICAgICAgJiYgbm9kZS5jYW5TcGVjdWxhdGVJbnRlZ2VyKCkpCisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBmaXhEb3VibGVFZGdlKDApOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEFyaXRoU3FydDog
eworICAgICAgICAgICAgZml4RG91YmxlRWRnZSgwKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBQdXRCeVZhbDogeworICAgICAgICAg
ICAgaWYgKCFtX2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKSB8fCAhbV9ncmFwaFtu
b2RlLmNoaWxkMigpXS5wcmVkaWN0aW9uKCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBpZiAoIW1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0uc2hvdWxkU3BlY3VsYXRlSW50ZWdl
cigpKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKGlzQWN0aW9uYWJs
ZUludE11dGFibGVBcnJheVByZWRpY3Rpb24obV9ncmFwaFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0
aW9uKCkpKSB7CisgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGhbbm9kZS5jaGlsZDMoKV0uaXND
b25zdGFudCgpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBp
ZiAobV9ncmFwaFtub2RlLmNoaWxkMygpXS5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyKCkpCisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGZpeERvdWJsZUVkZ2UoMik7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAo
aXNBY3Rpb25hYmxlRmxvYXRNdXRhYmxlQXJyYXlQcmVkaWN0aW9uKG1fZ3JhcGhbbm9kZS5jaGls
ZDEoKV0ucHJlZGljdGlvbigpKSkgeworICAgICAgICAgICAgICAgIGZpeERvdWJsZUVkZ2UoMik7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogCiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9W
RVJCT1NFKQorICAgICAgICBpZiAoIShub2RlLmZsYWdzKCkgJiBOb2RlSGFzVmFyQXJncykpIHsK
KyAgICAgICAgICAgIGRhdGFMb2coIm5ldyBjaGlsZHJlbjogIik7CisgICAgICAgICAgICBub2Rl
LmR1bXBDaGlsZHJlbihXVEY6OmRhdGFGaWxlKCkpOworICAgICAgICB9CiAgICAgICAgIGRhdGFM
b2coIlxuIik7CiAjZW5kaWYKICAgICB9CkBAIC0xNzksNyArMzA4LDM5IEBAIHByaXZhdGU6CiAg
ICAgICAgIGVkZ2UgPSBuZXdFZGdlOwogICAgIH0KICAgICAKKyAgICB2b2lkIGZpeERvdWJsZUVk
Z2UodW5zaWduZWQgY2hpbGRJbmRleCkKKyAgICB7CisgICAgICAgIE5vZGUmIHNvdXJjZSA9IG1f
Z3JhcGhbbV9jb21waWxlSW5kZXhdOworICAgICAgICBFZGdlJiBlZGdlID0gc291cmNlLmNoaWxk
cmVuLmNoaWxkKGNoaWxkSW5kZXgpOworICAgICAgICAKKyAgICAgICAgaWYgKCFtX2dyYXBoW2Vk
Z2VdLnNob3VsZFNwZWN1bGF0ZUludGVnZXIoKSkgeworICAgICAgICAgICAgZWRnZS5zZXRVc2VL
aW5kKERvdWJsZVVzZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIE5vZGVJbmRleCByZXN1bHRJbmRleCA9IChOb2RlSW5kZXgpbV9ncmFwaC5zaXpl
KCk7CisgICAgICAgIAorI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkK
KyAgICAgICAgZGF0YUxvZygiKHJlcGxhY2luZyBAJXUtPkAldSB3aXRoIEAldS0+QCV1KSAiLAor
ICAgICAgICAgICAgICAgIG1fY29tcGlsZUluZGV4LCBlZGdlLmluZGV4KCksIG1fY29tcGlsZUlu
ZGV4LCByZXN1bHRJbmRleCk7CisjZW5kaWYKKyAgICAgICAgCisgICAgICAgIC8vIEZpeCB0aGUg
ZWRnZSB1cCBoZXJlIGJlY2F1c2UgaXQncyBhIHJlZmVyZW5jZSB0aGF0IHdpbGwgYmUgY2xvYmJl
cmVkIGJ5CisgICAgICAgIC8vIHRoZSBhcHBlbmQoKSBiZWxvdy4KKyAgICAgICAgTm9kZUluZGV4
IG9sZEluZGV4ID0gZWRnZS5pbmRleCgpOworICAgICAgICBlZGdlID0gRWRnZShyZXN1bHRJbmRl
eCwgRG91YmxlVXNlKTsKKworICAgICAgICBtX2dyYXBoLmFwcGVuZChOb2RlKEludDMyVG9Eb3Vi
bGUsIHNvdXJjZS5jb2RlT3JpZ2luLCBvbGRJbmRleCkpOworICAgICAgICBtX2luc2VydGlvblNl
dC5hcHBlbmQobV9pbmRleEluQmxvY2ssIHJlc3VsdEluZGV4KTsKKyAgICAgICAgCisgICAgICAg
IE5vZGUmIGludDMyVG9Eb3VibGUgPSBtX2dyYXBoW3Jlc3VsdEluZGV4XTsKKyAgICAgICAgaW50
MzJUb0RvdWJsZS5wcmVkaWN0KFByZWRpY3REb3VibGUpOworICAgICAgICBpbnQzMlRvRG91Ymxl
LnJlZigpOworICAgIH0KKyAgICAKKyAgICB1bnNpZ25lZCBtX2luZGV4SW5CbG9jazsKICAgICBO
b2RlSW5kZXggbV9jb21waWxlSW5kZXg7CisgICAgSW5zZXJ0aW9uU2V0PE5vZGVJbmRleD4gbV9p
bnNlcnRpb25TZXQ7CiB9OwogICAgIAogdm9pZCBwZXJmb3JtRml4dXAoR3JhcGgmIGdyYXBoKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHJldmlzaW9uIDExMjAy
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNjMsMTUgKzE2MywzMCBAQCB2b2lkIEdyYXBoOjpkdW1wKE5vZGVJbmRleCBub2Rl
SW5kZXgpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiLCAiKTsKICAgICAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgICAgICBoYXNQcmludGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIGRhdGFMb2co
IkAldSVzIiwgbV92YXJBcmdDaGlsZHJlbltjaGlsZElkeF0uaW5kZXgoKSwgcHJlZGljdGlvblRv
QWJicmV2aWF0ZWRTdHJpbmcoYXQoY2hpbGRJZHgpLnByZWRpY3Rpb24oKSkpOworICAgICAgICAg
ICAgZGF0YUxvZygiJXNAJXUlcyIsCisgICAgICAgICAgICAgICAgICAgIHVzZUtpbmRUb1N0cmlu
ZyhtX3ZhckFyZ0NoaWxkcmVuW2NoaWxkSWR4XS51c2VLaW5kKCkpLAorICAgICAgICAgICAgICAg
ICAgICBtX3ZhckFyZ0NoaWxkcmVuW2NoaWxkSWR4XS5pbmRleCgpLAorICAgICAgICAgICAgICAg
ICAgICBwcmVkaWN0aW9uVG9BYmJyZXZpYXRlZFN0cmluZyhhdChjaGlsZElkeCkucHJlZGljdGlv
bigpKSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICBpZiAoISFub2RlLmNoaWxk
MSgpKQotICAgICAgICAgICAgZGF0YUxvZygiQCV1JXMiLCBub2RlLmNoaWxkMSgpLmluZGV4KCks
IHByZWRpY3Rpb25Ub0FiYnJldmlhdGVkU3RyaW5nKGF0KG5vZGUuY2hpbGQxKCkpLnByZWRpY3Rp
b24oKSkpOwotICAgICAgICBpZiAoISFub2RlLmNoaWxkMigpKQotICAgICAgICAgICAgZGF0YUxv
ZygiLCBAJXUlcyIsIG5vZGUuY2hpbGQyKCkuaW5kZXgoKSwgcHJlZGljdGlvblRvQWJicmV2aWF0
ZWRTdHJpbmcoYXQobm9kZS5jaGlsZDIoKSkucHJlZGljdGlvbigpKSk7Ci0gICAgICAgIGlmICgh
IW5vZGUuY2hpbGQzKCkpCi0gICAgICAgICAgICBkYXRhTG9nKCIsIEAldSVzIiwgbm9kZS5jaGls
ZDMoKS5pbmRleCgpLCBwcmVkaWN0aW9uVG9BYmJyZXZpYXRlZFN0cmluZyhhdChub2RlLmNoaWxk
MygpKS5wcmVkaWN0aW9uKCkpKTsKKyAgICAgICAgaWYgKCEhbm9kZS5jaGlsZDEoKSkgeworICAg
ICAgICAgICAgZGF0YUxvZygiJXNAJXUlcyIsCisgICAgICAgICAgICAgICAgICAgIHVzZUtpbmRU
b1N0cmluZyhub2RlLmNoaWxkMSgpLnVzZUtpbmQoKSksCisgICAgICAgICAgICAgICAgICAgIG5v
ZGUuY2hpbGQxKCkuaW5kZXgoKSwKKyAgICAgICAgICAgICAgICAgICAgcHJlZGljdGlvblRvQWJi
cmV2aWF0ZWRTdHJpbmcoYXQobm9kZS5jaGlsZDEoKSkucHJlZGljdGlvbigpKSk7CisgICAgICAg
IH0KKyAgICAgICAgaWYgKCEhbm9kZS5jaGlsZDIoKSkgeworICAgICAgICAgICAgZGF0YUxvZygi
LCAlc0AldSVzIiwKKyAgICAgICAgICAgICAgICAgICAgdXNlS2luZFRvU3RyaW5nKG5vZGUuY2hp
bGQyKCkudXNlS2luZCgpKSwKKyAgICAgICAgICAgICAgICAgICAgbm9kZS5jaGlsZDIoKS5pbmRl
eCgpLAorICAgICAgICAgICAgICAgICAgICBwcmVkaWN0aW9uVG9BYmJyZXZpYXRlZFN0cmluZyhh
dChub2RlLmNoaWxkMigpKS5wcmVkaWN0aW9uKCkpKTsKKyAgICAgICAgfQorICAgICAgICBpZiAo
ISFub2RlLmNoaWxkMygpKSB7CisgICAgICAgICAgICBkYXRhTG9nKCIsICVzQCV1JXMiLAorICAg
ICAgICAgICAgICAgICAgICB1c2VLaW5kVG9TdHJpbmcobm9kZS5jaGlsZDMoKS51c2VLaW5kKCkp
LAorICAgICAgICAgICAgICAgICAgICBub2RlLmNoaWxkMygpLmluZGV4KCksCisgICAgICAgICAg
ICAgICAgICAgIHByZWRpY3Rpb25Ub0FiYnJldmlhdGVkU3RyaW5nKGF0KG5vZGUuY2hpbGQzKCkp
LnByZWRpY3Rpb24oKSkpOworICAgICAgICB9CiAgICAgICAgIGhhc1ByaW50ZWQgPSAhIW5vZGUu
Y2hpbGQxKCk7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0lu
c2VydGlvblNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SW5zZXJ0aW9uU2V0LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0luc2VydGlvblNldC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDk4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgREZHSW5zZXJ0
aW9uU2V0X2gKKyNkZWZpbmUgREZHSW5zZWN0aW9uU2V0X2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0
Zm9ybS5oPgorCisjaWYgRU5BQkxFKERGR19KSVQpCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKwordGVtcGxhdGU8dHlwZW5hbWUg
RWxlbWVudFR5cGU+CitjbGFzcyBJbnNlcnRpb24geworcHVibGljOgorICAgIEluc2VydGlvbigp
IHsgfQorICAgIAorICAgIEluc2VydGlvbihzaXplX3QgaW5kZXgsIGNvbnN0IEVsZW1lbnRUeXBl
JiBlbGVtZW50KQorICAgICAgICA6IG1faW5kZXgoaW5kZXgpCisgICAgICAgICwgbV9lbGVtZW50
KGVsZW1lbnQpCisgICAgeworICAgIH0KKyAgICAKKyAgICBzaXplX3QgaW5kZXgoKSBjb25zdCB7
IHJldHVybiBtX2luZGV4OyB9CisgICAgY29uc3QgRWxlbWVudFR5cGUmIGVsZW1lbnQoKSBjb25z
dCB7IHJldHVybiBtX2VsZW1lbnQ7IH0KK3ByaXZhdGU6CisgICAgc2l6ZV90IG1faW5kZXg7Cisg
ICAgRWxlbWVudFR5cGUgbV9lbGVtZW50OworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVu
dFR5cGU+CitjbGFzcyBJbnNlcnRpb25TZXQgeworcHVibGljOgorICAgIEluc2VydGlvblNldCgp
IHsgfQorICAgIAorICAgIHZvaWQgYXBwZW5kKGNvbnN0IEluc2VydGlvbjxFbGVtZW50VHlwZT4m
IGluc2VydGlvbikKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV9pbnNlcnRpb25zLnNpemUoKSB8
fCBtX2luc2VydGlvbnMubGFzdCgpLmluZGV4KCkgPD0gaW5zZXJ0aW9uLmluZGV4KCkpOworICAg
ICAgICBtX2luc2VydGlvbnMuYXBwZW5kKGluc2VydGlvbik7CisgICAgfQorICAgIAorICAgIHZv
aWQgYXBwZW5kKHNpemVfdCBpbmRleCwgY29uc3QgRWxlbWVudFR5cGUmIGVsZW1lbnQpCisgICAg
eworICAgICAgICBhcHBlbmQoSW5zZXJ0aW9uPEVsZW1lbnRUeXBlPihpbmRleCwgZWxlbWVudCkp
OworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xsZWN0aW9uVHlwZT4KKyAg
ICB2b2lkIGV4ZWN1dGUoQ29sbGVjdGlvblR5cGUmIGNvbGxlY3Rpb24pCisgICAgeworICAgICAg
ICBpZiAoIW1faW5zZXJ0aW9ucy5zaXplKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IGNvbGxlY3Rpb24uZ3Jvdyhjb2xsZWN0aW9uLnNpemUoKSArIG1faW5zZXJ0aW9ucy5zaXplKCkp
OworICAgICAgICBzaXplX3QgbGFzdEluZGV4ID0gY29sbGVjdGlvbi5zaXplKCk7CisgICAgICAg
IGZvciAoc2l6ZV90IGluZGV4SW5JbnNlcnRpb25zID0gbV9pbnNlcnRpb25zLnNpemUoKTsgaW5k
ZXhJbkluc2VydGlvbnMtLTspIHsKKyAgICAgICAgICAgIEluc2VydGlvbjxFbGVtZW50VHlwZT4m
IGluc2VydGlvbiA9IG1faW5zZXJ0aW9uc1tpbmRleEluSW5zZXJ0aW9uc107CisgICAgICAgICAg
ICBzaXplX3QgZmlyc3RJbmRleCA9IGluc2VydGlvbi5pbmRleCgpICsgaW5kZXhJbkluc2VydGlv
bnM7CisgICAgICAgICAgICBzaXplX3QgaW5kZXhPZmZzZXQgPSBpbmRleEluSW5zZXJ0aW9ucyAr
IDE7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gbGFzdEluZGV4OyBpLS0gPiBmaXJzdElu
ZGV4OykKKyAgICAgICAgICAgICAgICBjb2xsZWN0aW9uW2ldID0gY29sbGVjdGlvbltpIC0gaW5k
ZXhPZmZzZXRdOworICAgICAgICAgICAgY29sbGVjdGlvbltmaXJzdEluZGV4XSA9IGluc2VydGlv
bi5lbGVtZW50KCk7CisgICAgICAgICAgICBsYXN0SW5kZXggPSBmaXJzdEluZGV4OworICAgICAg
ICB9CisgICAgICAgIG1faW5zZXJ0aW9ucy5yZXNpemUoMCk7CisgICAgfQorcHJpdmF0ZToKKyAg
ICBWZWN0b3I8SW5zZXJ0aW9uPEVsZW1lbnRUeXBlPiwgOD4gbV9pbnNlcnRpb25zOworfTsKKwor
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRworCisjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCisK
KyNlbmRpZiAvLyBERkdJbnNlcnRpb25TZXRfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlVHlwZS5oCShyZXZpc2lvbiAxMTIwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc1LDYgKzc1LDkgQEAg
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKFZhbHVlVG9JbnQzMiwg
Tm9kZVJlc3VsdEludDMyIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIC8qIFVzZWQgdG8gYm94
IHRoZSByZXN1bHQgb2YgVVJTaGlmdCBub2RlcyAocmVzdWx0IGhhcyByYW5nZSAwLi4yXjMyLTEp
LiAqL1wKICAgICBtYWNybyhVSW50MzJUb051bWJlciwgTm9kZVJlc3VsdE51bWJlcikgXAorICAg
IC8qIFVzZWQgdG8gY2FzdCBrbm93biBpbnRlZ2VycyB0byBkb3VibGVzLCBzbyBhcyB0byBzZXBh
cmF0ZSB0aGUgZG91YmxlIGZvcm0gKi9cCisgICAgLyogb2YgdGhlIHZhbHVlIGZyb20gdGhlIGlu
dGVnZXIgZm9ybS4gKi9cCisgICAgbWFjcm8oSW50MzJUb0RvdWJsZSwgTm9kZVJlc3VsdE51bWJl
cikgXAogICAgIFwKICAgICAvKiBOb2RlcyBmb3IgYXJpdGhtZXRpYyBvcGVyYXRpb25zLiAqL1wK
ICAgICBtYWNybyhBcml0aEFkZCwgTm9kZVJlc3VsdE51bWJlcikgXApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5jcHAJKHJldmlzaW9uIDExMjAyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
NjksNyArNTY5LDggQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXRVaW50MzJBcnJheUxlbmd0
aDoKICAgICAgICAgY2FzZSBHZXRGbG9hdDMyQXJyYXlMZW5ndGg6CiAgICAgICAgIGNhc2UgR2V0
RmxvYXQ2NEFycmF5TGVuZ3RoOgotICAgICAgICBjYXNlIEdldFN0cmluZ0xlbmd0aDogeworICAg
ICAgICBjYXNlIEdldFN0cmluZ0xlbmd0aDoKKyAgICAgICAgY2FzZSBJbnQzMlRvRG91YmxlOiB7
CiAgICAgICAgICAgICAvLyBUaGlzIG5vZGUgc2hvdWxkIG5ldmVyIGJlIHZpc2libGUgYXQgdGhp
cyBzdGFnZSBvZiBjb21waWxhdGlvbi4gSXQgaXMKICAgICAgICAgICAgIC8vIGluc2VydGVkIGJ5
IGZpeHVwKCksIHdoaWNoIGZvbGxvd3MgdGhpcyBwaGFzZS4KICAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAxMTIwMjQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xODc4LDYgKzE4NzgsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlJiBub2RlKQogICAgICAgICBjb21waWxlVmFsdWVUb0ludDMyKG5vZGUpOwogICAgICAgICBi
cmVhazsKICAgICB9CisgICAgICAgIAorICAgIGNhc2UgSW50MzJUb0RvdWJsZTogeworICAgICAg
ICBjb21waWxlSW50MzJUb0RvdWJsZShub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogCiAg
ICAgY2FzZSBWYWx1ZUFkZDoKICAgICBjYXNlIEFyaXRoQWRkOgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAx
MTIwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTY1LDYgKzE5NjUsMTEgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBjb21waWxlVmFsdWVUb0ludDMyKG5v
ZGUpOwogICAgICAgICBicmVhazsKICAgICB9CisgICAgICAgIAorICAgIGNhc2UgSW50MzJUb0Rv
dWJsZTogeworICAgICAgICBjb21waWxlSW50MzJUb0RvdWJsZShub2RlKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQogCiAgICAgY2FzZSBWYWx1ZUFkZDoKICAgICBjYXNlIEFyaXRoQWRkOgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJ
KHJldmlzaW9uIDExMjAyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjg0LDYgKzEyODQsMTAgQEAgVmFsdWVS
ZWNvdmVyeSBTcGVjdWxhdGl2ZUpJVDo6Y29tcHV0ZVZhbAogICAgICAgICAgICAgLy8gVHJ5IHRv
IHNlZSBpZiB0aGVyZSBpcyBhbiBhbHRlcm5hdGUgbm9kZSB0aGF0IHdvdWxkIGNvbnRhaW4gdGhl
IHZhbHVlIHdlIHdhbnQuCiAgICAgICAgICAgICAvLyBUaGVyZSBhcmUgZm91ciBwb3NzaWJpbGl0
aWVzOgogICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIEludDMyVG9Eb3VibGU6IFdlIGNh
biB1c2UgdGhpcyBpbiBwbGFjZSBvZiB0aGUgb3JpZ2luYWwgbm9kZSwgYnV0CisgICAgICAgICAg
ICAvLyAgICB3ZSdkIHJhdGhlciBub3Q7IHNvIHdlIHVzZSBpdCBvbmx5IGlmIGl0IGlzIHRoZSBv
bmx5IHJlbWFpbmluZworICAgICAgICAgICAgLy8gICAgbGl2ZSB2ZXJzaW9uLgorICAgICAgICAg
ICAgLy8KICAgICAgICAgICAgIC8vIFZhbHVlVG9JbnQzMjogSWYgdGhlIG9ubHkgcmVtYWluaW5n
IGxpdmUgdmVyc2lvbiBvZiB0aGUgdmFsdWUgaXMKICAgICAgICAgICAgIC8vICAgIFZhbHVlVG9J
bnQzMiwgdGhlbiB3ZSBjYW4gdXNlIGl0LgogICAgICAgICAgICAgLy8KQEAgLTEzMDYsNiArMTMx
MCw3IEBAIFZhbHVlUmVjb3ZlcnkgU3BlY3VsYXRpdmVKSVQ6OmNvbXB1dGVWYWwKICAgICAgICAg
ICAgIH0KICAgICAgICAgCiAgICAgICAgICAgICBpZiAoIWZvdW5kKSB7CisgICAgICAgICAgICAg
ICAgTm9kZUluZGV4IGludDMyVG9Eb3VibGVJbmRleCA9IE5vTm9kZTsKICAgICAgICAgICAgICAg
ICBOb2RlSW5kZXggdmFsdWVUb0ludDMySW5kZXggPSBOb05vZGU7CiAgICAgICAgICAgICAgICAg
Tm9kZUluZGV4IHVpbnQzMlRvTnVtYmVySW5kZXggPSBOb05vZGU7CiAgICAgICAgICAgICAKQEAg
LTEzMTksNiArMTMyNCw5IEBAIFZhbHVlUmVjb3ZlcnkgU3BlY3VsYXRpdmVKSVQ6OmNvbXB1dGVW
YWwKICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUuY2hpbGQxVW5jaGVja2VkKCkgIT0gdmFs
dWVTb3VyY2Uubm9kZUluZGV4KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLm9wKCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgY2FzZSBJbnQzMlRvRG91YmxlOgorICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJU
b0RvdWJsZUluZGV4ID0gaW5mby5ub2RlSW5kZXgoKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBjYXNlIFZhbHVlVG9JbnQzMjoKICAgICAgICAg
ICAgICAgICAgICAgICAgIHZhbHVlVG9JbnQzMkluZGV4ID0gaW5mby5ub2RlSW5kZXgoKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTMzMSw3ICsxMzM5LDkgQEAgVmFsdWVS
ZWNvdmVyeSBTcGVjdWxhdGl2ZUpJVDo6Y29tcHV0ZVZhbAogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgIE5vZGVJbmRleCBub2RlSW5kZXhUb1VzZTsKLSAg
ICAgICAgICAgICAgICBpZiAodmFsdWVUb0ludDMySW5kZXggIT0gTm9Ob2RlKQorICAgICAgICAg
ICAgICAgIGlmIChpbnQzMlRvRG91YmxlSW5kZXggIT0gTm9Ob2RlKQorICAgICAgICAgICAgICAg
ICAgICBub2RlSW5kZXhUb1VzZSA9IGludDMyVG9Eb3VibGVJbmRleDsKKyAgICAgICAgICAgICAg
ICBlbHNlIGlmICh2YWx1ZVRvSW50MzJJbmRleCAhPSBOb05vZGUpCiAgICAgICAgICAgICAgICAg
ICAgIG5vZGVJbmRleFRvVXNlID0gdmFsdWVUb0ludDMySW5kZXg7CiAgICAgICAgICAgICAgICAg
ZWxzZSBpZiAodWludDMyVG9OdW1iZXJJbmRleCAhPSBOb05vZGUpCiAgICAgICAgICAgICAgICAg
ICAgIG5vZGVJbmRleFRvVXNlID0gdWludDMyVG9OdW1iZXJJbmRleDsKQEAgLTE1MzcsNyArMTU0
Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZVRvSW50MzIKICAgICAgICAg
fQogICAgICAgICBjYXNlIEdlbmVyYXRlZE9wZXJhbmREb3VibGU6IHsKICAgICAgICAgICAgIEdQ
UlRlbXBvcmFyeSByZXN1bHQodGhpcyk7Ci0gICAgICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVy
YW5kIG9wMSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICAgICAgICAgIERvdWJsZU9wZXJhbmQg
b3AxKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICAgICAgRlBSUmVnIGZwciA9IG9wMS5m
cHIoKTsKICAgICAgICAgICAgIEdQUlJlZyBncHIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAgICAg
ICBKSVRDb21waWxlcjo6SnVtcCB0cnVuY2F0ZWRUb0ludGVnZXIgPSBtX2ppdC5icmFuY2hUcnVu
Y2F0ZURvdWJsZVRvSW50MzIoZnByLCBncHIsIEpJVENvbXBpbGVyOjpCcmFuY2hJZlRydW5jYXRl
U3VjY2Vzc2Z1bCk7CkBAIC0xNjc0LDYgKzE2ODQsODMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVVJbnQzMlRvTnVtYgogICAgIGludGVnZXJSZXN1bHQocmVzdWx0LmdwcigpLCBtX2Nv
bXBpbGVJbmRleCwgb3AxLmZvcm1hdCgpKTsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUludDMyVG9Eb3VibGUoTm9kZSYgbm9kZSkKK3sKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAg
IC8vIE9uIEpTVkFMVUU2NCB3ZSBoYXZlIGEgd2F5IG9mIGxvYWRpbmcgZG91YmxlIGNvbnN0YW50
cyBpbiBhIG1vcmUgZGlyZWN0IG1hbm5lcgorICAgIC8vIHRoYW4gYSBpbnQtPmRvdWJsZSBjb252
ZXJzaW9uLiBPbiAzMl82NCwgdW5mb3J0dW5hdGVseSwgd2UgY3VycmVudGx5IGRvbid0IGhhdmUK
KyAgICAvLyBhbnkgc3VjaCBtZWNoYW5pc20gLSB0aG91Z2ggd2UgY291bGQgaGF2ZSBpdCwgaWYg
d2UganVzdCBwcm92aXNpb25lZCBzb21lIG1lbW9yeQorICAgIC8vIGluIENvZGVCbG9jayBmb3Ig
dGhlIGRvdWJsZSBmb3JtIG9mIGludGVnZXIgY29uc3RhbnRzLgorICAgIGlmIChhdChub2RlLmNo
aWxkMSgpKS5oYXNDb25zdGFudCgpKSB7CisgICAgICAgIEFTU0VSVChpc0ludDMyQ29uc3RhbnQo
bm9kZS5jaGlsZDEoKS5pbmRleCgpKSk7CisgICAgICAgIEZQUlRlbXBvcmFyeSByZXN1bHQodGhp
cyk7CisgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOworICAgICAgICBtX2ppdC5tb3Zl
KE1hY3JvQXNzZW1ibGVyOjpJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVpbnRlcnBy
ZXREb3VibGVUb0ludHB0cih2YWx1ZU9mTnVtYmVyQ29uc3RhbnQobm9kZS5jaGlsZDEoKS5pbmRl
eCgpKSkpKSwgdGVtcC5ncHIoKSk7CisgICAgICAgIG1faml0Lm1vdmVQdHJUb0RvdWJsZSh0ZW1w
LmdwcigpLCByZXN1bHQuZnByKCkpOworICAgICAgICBtX2ppdC5sb2FkRG91YmxlKGFkZHJlc3NP
ZkRvdWJsZUNvbnN0YW50KG5vZGUuY2hpbGQxKCkuaW5kZXgoKSksIHJlc3VsdC5mcHIoKSk7Cisg
ICAgICAgIGRvdWJsZVJlc3VsdChyZXN1bHQuZnByKCksIG1fY29tcGlsZUluZGV4KTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorICAgIAorICAgIGlmIChpc0ludDMyUHJlZGljdGlv
bihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkgeworICAgICAgICBTcGVj
dWxhdGVJbnRlZ2VyT3BlcmFuZCBvcDEodGhpcywgbm9kZS5jaGlsZDEoKSk7CisgICAgICAgIEZQ
UlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgICAgIG1faml0LmNvbnZlcnRJbnQzMlRvRG91
YmxlKG9wMS5ncHIoKSwgcmVzdWx0LmZwcigpKTsKKyAgICAgICAgZG91YmxlUmVzdWx0KHJlc3Vs
dC5mcHIoKSwgbV9jb21waWxlSW5kZXgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAor
ICAgIEpTVmFsdWVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICBGUFJUZW1w
b3JhcnkgcmVzdWx0KHRoaXMpOworICAgIAorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgR1BSVGVt
cG9yYXJ5IHRlbXAodGhpcyk7CisKKyAgICBHUFJSZWcgb3AxR1BSID0gb3AxLmdwcigpOworICAg
IEdQUlJlZyB0ZW1wR1BSID0gdGVtcC5ncHIoKTsKKyAgICBGUFJSZWcgcmVzdWx0RlBSID0gcmVz
dWx0LmZwcigpOworICAgIAorICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzSW50ZWdlciA9IG1faml0
LmJyYW5jaFB0cigKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgb3AxR1BS
LCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOworICAgIAorICAgIHNwZWN1bGF0aW9u
Q2hlY2soCisgICAgICAgIEJhZFR5cGUsIEpTVmFsdWVSZWdzKG9wMUdQUiksIG5vZGUuY2hpbGQx
KCksCisgICAgICAgIG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIG9w
MUdQUiwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7CisgICAgCisgICAgbV9qaXQu
bW92ZShvcDFHUFIsIHRlbXBHUFIpOworICAgIHVuYm94RG91YmxlKHRlbXBHUFIsIHJlc3VsdEZQ
Uik7CisgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKKyAgICAKKyAg
ICBpc0ludGVnZXIubGluaygmbV9qaXQpOworICAgIG1faml0LmNvbnZlcnRJbnQzMlRvRG91Ymxl
KG9wMUdQUiwgcmVzdWx0RlBSKTsKKyAgICBkb25lLmxpbmsoJm1faml0KTsKKyNlbHNlCisgICAg
RlBSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgCisgICAgR1BSUmVnIG9wMVRhZ0dQUiA9IG9w
MS50YWdHUFIoKTsKKyAgICBHUFJSZWcgb3AxUGF5bG9hZEdQUiA9IG9wMS5wYXlsb2FkR1BSKCk7
CisgICAgRlBSUmVnIHRlbXBGUFIgPSB0ZW1wLmZwcigpOworICAgIEZQUlJlZyByZXN1bHRGUFIg
PSByZXN1bHQuZnByKCk7CisgICAgCisgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNJbnRlZ2VyID0g
bV9qaXQuYnJhbmNoMzIoCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgb3AxVGFnR1BS
LCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKTsKKyAgICAKKyAgICBzcGVjdWxhdGlv
bkNoZWNrKAorICAgICAgICBCYWRUeXBlLCBKU1ZhbHVlUmVncyhvcDFUYWdHUFIsIG9wMVBheWxv
YWRHUFIpLCBub2RlLmNoaWxkMSgpLAorICAgICAgICBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2Vt
Ymxlcjo6QWJvdmVPckVxdWFsLCBvcDFUYWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpMb3dl
c3RUYWcpKSk7CisgICAgCisgICAgdW5ib3hEb3VibGUob3AxVGFnR1BSLCBvcDFQYXlsb2FkR1BS
LCByZXN1bHRGUFIsIHRlbXBGUFIpOworICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmUgPSBtX2pp
dC5qdW1wKCk7CisgICAgCisgICAgaXNJbnRlZ2VyLmxpbmsoJm1faml0KTsKKyAgICBtX2ppdC5j
b252ZXJ0SW50MzJUb0RvdWJsZShvcDFQYXlsb2FkR1BSLCByZXN1bHRGUFIpOworICAgIGRvbmUu
bGluaygmbV9qaXQpOworI2VuZGlmCisgICAgCisgICAgZG91YmxlUmVzdWx0KHJlc3VsdEZQUiwg
bV9jb21waWxlSW5kZXgpOworfQorCiBzdGF0aWMgZG91YmxlIGNsYW1wRG91YmxlVG9CeXRlKGRv
dWJsZSBkKQogewogICAgIGQgKz0gMC41OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMTEyMDI0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NzMyLDYgKzE3MzIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcGlsZUdldEJ5VmFsT25TdHJp
bmcoTm9kZSYpOwogICAgIHZvaWQgY29tcGlsZVZhbHVlVG9JbnQzMihOb2RlJik7CiAgICAgdm9p
ZCBjb21waWxlVUludDMyVG9OdW1iZXIoTm9kZSYpOworICAgIHZvaWQgY29tcGlsZUludDMyVG9E
b3VibGUoTm9kZSYpOwogICAgIHZvaWQgY29tcGlsZUdldEJ5VmFsT25CeXRlQXJyYXkoTm9kZSYp
OwogICAgIHZvaWQgY29tcGlsZVB1dEJ5VmFsRm9yQnl0ZUFycmF5KEdQUlJlZyBiYXNlLCBHUFJS
ZWcgcHJvcGVydHksIE5vZGUmKTsKICAgICB2b2lkIGNvbXBpbGVBZGQoTm9kZSYpOwpAQCAtMTk4
NCw2ICsxOTg1LDcgQEAgcHVibGljOgogI2VuZGlmCiAgICAgewogICAgICAgICBBU1NFUlQobV9q
aXQpOworICAgICAgICBBU1NFUlQodXNlLnVzZUtpbmQoKSAhPSBEb3VibGVVc2UpOwogICAgICAg
ICBpZiAoaml0LT5pc0ZpbGxlZChtX2luZGV4KSkKICAgICAgICAgICAgIGdwcigpOwogICAgIH0K
QEAgLTIwMzMsNiArMjAzNSwxNSBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9mcHJPckludmFsaWQo
SW52YWxpZEZQUlJlZykKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2ppdCk7CisgICAgICAgIAor
ICAgICAgICAvLyBUaGlzIGlzIGNvdW50ZXItaW50dWl0aXZlIGJ1dCBjb3JyZWN0LiBEb3VibGVP
cGVyYW5kIGlzIGludGVuZGVkIHRvCisgICAgICAgIC8vIGJlIHVzZWQgb25seSB3aGVuIHlvdSdy
ZSBhIG5vZGUgdGhhdCBpcyBoYXBweSB0byBhY2NlcHQgYW4gdW50eXBlZAorICAgICAgICAvLyB2
YWx1ZSwgYnV0IHdpbGwgc3BlY2lhbC1jYXNlIGZvciBkb3VibGVzICh1c2luZyBEb3VibGVPcGVy
YW5kKSBpZiB0aGUKKyAgICAgICAgLy8gdmFsdWUgaGFwcGVuZWQgdG8gYWxyZWFkeSBiZSByZXBy
ZXNlbnRlZCBhcyBhIGRvdWJsZS4gVGhlIGltcGxpY2F0aW9uCisgICAgICAgIC8vIGlzIHRoYXQg
eW91IHdpbGwgbm90IHRyeSB0byBmb3JjZSB0aGUgdmFsdWUgdG8gYmVjb21lIGEgZG91YmxlIGlm
IGl0CisgICAgICAgIC8vIGlzIG5vdCBvbmUgYWxyZWFkeS4KKyAgICAgICAgQVNTRVJUKHVzZS51
c2VLaW5kKCkgIT0gRG91YmxlVXNlKTsKKyAgICAgICAgCiAgICAgICAgIGlmIChqaXQtPmlzRmls
bGVkRG91YmxlKG1faW5kZXgpKQogICAgICAgICAgICAgZnByKCk7CiAgICAgfQpAQCAtMjA3OCw2
ICsyMDg5LDcgQEAgcHVibGljOgogI2VuZGlmCiAgICAgewogICAgICAgICBBU1NFUlQobV9qaXQp
OworICAgICAgICBBU1NFUlQodXNlLnVzZUtpbmQoKSAhPSBEb3VibGVVc2UpOwogI2lmIFVTRShK
U1ZBTFVFNjQpCiAgICAgICAgIGlmIChqaXQtPmlzRmlsbGVkKG1faW5kZXgpKQogICAgICAgICAg
ICAgZ3ByKCk7CkBAIC0yMTg4LDYgKzIyMDAsNyBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9ncHJP
ckludmFsaWQoSW52YWxpZEdQUlJlZykKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2ppdCk7Cisg
ICAgICAgIEFTU0VSVCh1c2UudXNlS2luZCgpICE9IERvdWJsZVVzZSk7CiAgICAgICAgIGlmIChq
aXQtPmlzRmlsbGVkKG1faW5kZXgpKQogICAgICAgICAgICAgZ3ByKCk7CiAgICAgfQpAQCAtMjM2
MCw2ICsyMzczLDcgQEAgcHVibGljOgogI2VuZGlmCiAgICAgewogICAgICAgICBBU1NFUlQobV9q
aXQpOworICAgICAgICBBU1NFUlQodXNlLnVzZUtpbmQoKSAhPSBEb3VibGVVc2UpOwogICAgICAg
ICBpZiAoaml0LT5pc0ZpbGxlZChtX2luZGV4KSkKICAgICAgICAgICAgIGdwcigpOwogICAgIH0K
QEAgLTI0MDQsNiArMjQxOCw3IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2dwck9ySW52YWxpZChJ
bnZhbGlkR1BSUmVnKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1faml0KTsKKyAgICAgICAgQVNT
RVJUKHVzZS51c2VLaW5kKCkgIT0gRG91YmxlVXNlKTsKICAgICAgICAgaWYgKGppdC0+aXNGaWxs
ZWQobV9pbmRleCkpCiAgICAgICAgICAgICBncHIoKTsKICAgICB9CkBAIC0yNDQ1LDYgKzI0NjAs
NyBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9mcHJPckludmFsaWQoSW52YWxpZEZQUlJlZykKICAg
ICB7CiAgICAgICAgIEFTU0VSVChtX2ppdCk7CisgICAgICAgIEFTU0VSVCh1c2UudXNlS2luZCgp
ID09IERvdWJsZVVzZSk7CiAgICAgICAgIGlmIChqaXQtPmlzRmlsbGVkKG1faW5kZXgpKQogICAg
ICAgICAgICAgZnByKCk7CiAgICAgfQpAQCAtMjQ4MSw2ICsyNDk3LDcgQEAgcHVibGljOgogICAg
ICAgICAsIG1fZ3ByT3JJbnZhbGlkKEludmFsaWRHUFJSZWcpCiAgICAgewogICAgICAgICBBU1NF
UlQobV9qaXQpOworICAgICAgICBBU1NFUlQodXNlLnVzZUtpbmQoKSAhPSBEb3VibGVVc2UpOwog
ICAgICAgICBpZiAoaml0LT5pc0ZpbGxlZChtX2luZGV4KSkKICAgICAgICAgICAgIGdwcigpOwog
ICAgIH0KQEAgLTI1MjIsNiArMjUzOSw3IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2dwck9ySW52
YWxpZChJbnZhbGlkR1BSUmVnKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1faml0KTsKKyAgICAg
ICAgQVNTRVJUKHVzZS51c2VLaW5kKCkgIT0gRG91YmxlVXNlKTsKICAgICAgICAgaWYgKGppdC0+
aXNGaWxsZWQobV9pbmRleCkpCiAgICAgICAgICAgICBncHIoKTsKICAgICB9Cg==
</data>
<flag name="review"
          id="137763"
          type_id="1"
          status="+"
          setter="oliver"
    />
    <flag name="commit-queue"
          id="137764"
          type_id="3"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133696</attachid>
            <date>2012-03-25 15:58:14 -0700</date>
            <delta_ts>2012-03-25 15:58:14 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>inttodouble_patch_7.diff</filename>
            <type>text/plain</type>
            <size>35180</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTEyMDI0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkxIEBA
CisyMDEyLTAzLTI1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIGludC10by1kb3VibGUgY29udmVyc2lvbiBzaG91bGQgYmUgcmV2ZWFsZWQgdG8gQ1NFCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjEzNQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE9saXZlciBIdW50LgorICAgICAgICAKKyAgICAgICAgVGhpcyBp
bnRyb2R1Y2VzIHRoZSBub3Rpb24gb2YgYW4gSW50MzJUb0RvdWJsZSBub2RlLCB3aGljaCBpcyBp
bmplY3RlZAorICAgICAgICBpbnRvIHRoZSBncmFwaCBhbnl0aW1lIHdlIGtub3cgdGhhdCB3ZSBo
YXZlIGEgZG91YmxlIHVzZSBvZiBhIG5vZGUgdGhhdAorICAgICAgICB3YXMgcHJlZGljdGVkIGlu
dGVnZXIuIFRoZSBJbnQzMlRvRG91YmxlIHNpbXBsaWZpZXMgZG91YmxlIHNwZWN1bGF0aW9uCisg
ICAgICAgIG9uIGludGVnZXJzIGJ5IHNraXBwaW5nIHRoZSBwYXRoIHRoYXQgd291bGQgdW5ib3gg
ZG91YmxlcywgaWYgd2Uga25vdworICAgICAgICB0aGF0IHRoZSB2YWx1ZSBpcyBhbHJlYWR5IHBy
b3ZlbiB0byBiZSBhbiBpbnRlZ2VyLiBJdCBhbGxvd3MgaW50ZWdlciB0bworICAgICAgICBkb3Vi
bGUgY29udmVyc2lvbnMgdG8gYmUgc3ViamVjdGVkIHRvIGNvbW1vbiBzdWJleHByZXNzaW9uIGVs
aW1pbmF0aW9uCisgICAgICAgIChDU0UpIGJ5IGFsbG93aW5nIHRoZSBDU0UgcGhhc2UgdG8gc2Vl
IHdoZXJlIHRoZXNlIGNvbnZlcnNpb25zIGFyZQorICAgICAgICBvY2N1cnJpbmcuIEZpbmFsbHks
IGl0IGFsbG93cyB1cyB0byBzZWUgd2hlbiBhIGNvbnN0YW50IGlzIGJlaW5nIHVzZWQKKyAgICAg
ICAgYXMgYm90aCBhIGRvdWJsZSBhbmQgYW4gaW50ZWdlci4gVGhpcyBpcyBhIGJpdCBvZGQsIHNp
bmNlIGl0IG1lYW5zIHRoYXQKKyAgICAgICAgc29tZXRpbWVzIGEgZG91YmxlIHVzZSBvZiBhIGNv
bnN0YW50IHdpbGwgbm90IHJlZmVyIGRpcmVjdGx5IHRvIHRoZQorICAgICAgICBjb25zdGFudC4g
VGhpcyBzaG91bGQgbm90IGNhdXNlIHByb2JsZW1zLCBmb3Igbm93LCBidXQgaXQgbWF5IHJlcXVp
cmUKKyAgICAgICAgc29tZSBjYW5vbml6YWxpemF0aW9uIGluIHRoZSBmdXR1cmUgaWYgd2Ugd2Fu
dCB0byBzdXBwb3J0IHN0cmVuZ3RoCisgICAgICAgIHJlZHVjdGlvbnMgb2YgZG91YmxlIG9wZXJh
dGlvbnMgYmFzZWQgb24gY29uc3RhbnRzLgorICAgICAgICAKKyAgICAgICAgVG8gYWxsb3cgaW5q
ZWN0aW9uIG9mIG5vZGVzIGludG8gdGhlIGdyYXBoLCB0aGlzIGNoYW5nZSBpbnRyb2R1Y2VzIHRo
ZQorICAgICAgICBERkc6Okluc2VydGlvblNldCwgd2hpY2ggaXMgYSB3YXkgb2YgbGF6aWx5IGlu
c2VydGluZyBlbGVtZW50cyBpbnRvIGEKKyAgICAgICAgbGlzdC4gVGhpcyBhbGxvd3MgdGhlIEZp
eHVwUGhhc2UgdG8gcmVtYWluIE8oTikgZGVzcGl0ZSBwZXJmb3JtaW5nCisgICAgICAgIG11bHRp
cGxlIGluamVjdGlvbnMgaW4gYSBzaW5nbGUgYmFzaWMgYmxvY2suIFdpdGhvdXQgdGhlIEluc2Vy
dGlvblNldCwKKyAgICAgICAgZWFjaCBpbmplY3Rpb24gd291bGQgcmVxdWlyZSBwZXJmb3JtaW5n
IGFuIGluc2VydGlvbiBpbnRvIGEgdmVjdG9yLAorICAgICAgICB3aGljaCBpcyBPKE4pLCBsZWFk
aW5nIHRvIE8oTl4yKSBwZXJmb3JtYW5jZSBvdmVyYWxsLiBXaXRoIHRoZQorICAgICAgICBJbnNl
cnRpb25TZXQsIGVhY2ggaW5qZWN0aW9uIHNpbXBseSByZWNvcmRzIHdoYXQgaW5zZXJ0aW9uIHdv
dWxkIGhhdmUKKyAgICAgICAgYmVlbiBwZXJmb3JtZWQsIGFuZCBhbGwgaW5zZXJ0aW9ucyBhcmUg
cGVyZm9ybWVkIGF0IG9uY2UgKHZpYQorICAgICAgICBJbnNlcnRpb25TZXQ6OmV4ZWN1dGUpIGFm
dGVyIHByb2Nlc3Npbmcgb2YgYSBiYXNpYyBibG9jayBpcyBjb21wbGV0ZWQuCisKKyAgICAgICAg
KiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJ5
dGVjb2RlL1ByZWRpY3RlZFR5cGUuaDoKKyAgICAgICAgKEpTQzo6aXNBY3Rpb25hYmxlSW50TXV0
YWJsZUFycmF5UHJlZGljdGlvbik6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjppc0Fj
dGlvbmFibGVGbG9hdE11dGFibGVBcnJheVByZWRpY3Rpb24pOgorICAgICAgICAoSlNDOjppc0Fj
dGlvbmFibGVUeXBlZE11dGFibGVBcnJheVByZWRpY3Rpb24pOgorICAgICAgICAoSlNDOjppc0Fj
dGlvbmFibGVNdXRhYmxlQXJyYXlQcmVkaWN0aW9uKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJh
Y3RTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSk6
CisgICAgICAgICogZGZnL0RGR0NTRVBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQ
aGFzZTo6cGVyZm9ybU5vZGVDU0UpOgorICAgICAgICAqIGRmZy9ERkdDb21tb24uaDoKKyAgICAg
ICAgKEpTQzo6REZHOjp1c2VLaW5kVG9TdHJpbmcpOgorICAgICAgICAoREZHKToKKyAgICAgICAg
KiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6
cnVuKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cEJsb2NrKToKKyAgICAg
ICAgKEZpeHVwUGhhc2UpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9k
ZSk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4RG91YmxlRWRnZSk6CisgICAg
ICAgICogZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6ZHVtcCk6
CisgICAgICAgICogZGZnL0RGR0luc2VydGlvblNldC5oOiBBZGRlZC4KKyAgICAgICAgKERGRyk6
CisgICAgICAgIChJbnNlcnRpb24pOgorICAgICAgICAoSlNDOjpERkc6Okluc2VydGlvbjo6SW5z
ZXJ0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpJbnNlcnRpb246OmluZGV4KToKKyAgICAgICAg
KEpTQzo6REZHOjpJbnNlcnRpb246OmVsZW1lbnQpOgorICAgICAgICAoSW5zZXJ0aW9uU2V0KToK
KyAgICAgICAgKEpTQzo6REZHOjpJbnNlcnRpb25TZXQ6Okluc2VydGlvblNldCk6CisgICAgICAg
IChKU0M6OkRGRzo6SW5zZXJ0aW9uU2V0OjphcHBlbmQpOgorICAgICAgICAoSlNDOjpERkc6Oklu
c2VydGlvblNldDo6ZXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAg
ICAgIChERkcpOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3Bh
Z2F0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcHV0ZVZhbHVlUmVjb3ZlcnlGb3IpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVUb0ludDMyKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUludDMyVG9Eb3VibGUpOgorICAg
ICAgICAoREZHKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAg
KFNwZWN1bGF0aXZlSklUKToKKyAgICAgICAgKEpTQzo6REZHOjpJbnRlZ2VyT3BlcmFuZDo6SW50
ZWdlck9wZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6OkRvdWJsZU9wZXJhbmQ6OkRvdWJsZU9w
ZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6OkpTVmFsdWVPcGVyYW5kOjpKU1ZhbHVlT3BlcmFu
ZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3RvcmFnZU9wZXJhbmQ6OlN0b3JhZ2VPcGVyYW5kKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGVJbnRlZ2VyT3BlcmFuZDo6U3BlY3VsYXRlSW50
ZWdlck9wZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZVN0cmljdEludDMyT3Bl
cmFuZDo6U3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGVEb3VibGVPcGVyYW5kOjpTcGVjdWxhdGVEb3VibGVPcGVyYW5kKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGVDZWxsT3BlcmFuZDo6U3BlY3VsYXRlQ2VsbE9wZXJhbmQpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZUJvb2xlYW5PcGVyYW5kOjpTcGVjdWxhdGVCb29s
ZWFuT3BlcmFuZCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUpOgorCiAyMDEyLTAzLTI0ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBs
ZS5jb20+CiAKICAgICAgICAgREZHIDY0LWJpdCBCcmFuY2ggaW1wbGVtZW50YXRpb24gc2hvdWxk
IG5vdCBiZSBjcmVhdGluZyBhIEpTVmFsdWVPcGVyYW5kIHRoYXQKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMTIwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtNzQsNiArNzQsNyBAQAogCQkwRjI0MkRBNzEzRjNCMUU4MDA3QURENEMgLyogV2Vha1Jl
ZmVyZW5jZUhhcnZlc3Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYyNDJEQTUxM0YzQjFCQjAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RjJCREMxNTE1MUM1RDREMDBDRDg5MTAgLyogREZHRml4dXBQaGFzZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJCREMxMjE1MUM1RDRBMDBDRDg5
MTAgLyogREZHRml4dXBQaGFzZS5jcHAgKi87IH07CiAJCTBGMkJEQzE2MTUxQzVENEYwMENEODkx
MCAvKiBERkdGaXh1cFBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjJCREMxMzE1MUM1RDRBMDBDRDg5MTAgLyogREZHRml4dXBQaGFzZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMkJEQzIx
MTUxRTgwM0IwMENEODkxMCAvKiBERkdJbnNlcnRpb25TZXQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkJEQzFGMTUxRTgwMzgwMENEODkxMCAvKiBE
RkdJbnNlcnRpb25TZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkwRjJDNTU2RjE0NzM4RjMxMDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzU1NkUxNDcz
OEYyRTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjJDNTU3MDE0NzM4RjM1MDAxMjFFNEYgLyogREZH
Q29kZUJsb2Nrcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjJDNTU2RDE0NzM4RjJFMDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5jcHAgKi87IH07
CiAJCTBGNDI2QTQ4MTQ2MENCQjMwMDEzMUY4RiAvKiBWYWx1ZVJlY292ZXJ5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQyNkE0NTE0NjBDQkFCMDAx
MzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC03MjQsNiArNzI1LDcgQEAKIAkJMEYyNDJEQTUxM0YzQjFCQjAw
N0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjJCREMxMjE1MUM1RDRBMDBDRDg5MTAgLyogREZHRml4dXBQaGFzZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdGaXh1cFBoYXNlLmNwcDsg
cGF0aCA9IGRmZy9ERkdGaXh1cFBoYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEYyQkRDMTMxNTFDNUQ0QTAwQ0Q4OTEwIC8qIERGR0ZpeHVwUGhhc2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHRml4dXBQaGFzZS5oOyBwYXRoID0gZGZnL0RGR0Zp
eHVwUGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQkRDMUYxNTFFODAz
ODAwQ0Q4OTEwIC8qIERGR0luc2VydGlvblNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBERkdJbnNlcnRpb25TZXQuaDsgcGF0aCA9IGRmZy9ERkdJbnNlcnRpb25TZXQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyQzU1NkQxNDczOEYyRTAwMTIxRTRGIC8q
IERGR0NvZGVCbG9ja3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
REZHQ29kZUJsb2Nrcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkM1NTZF
MTQ3MzhGMkUwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERGR0NvZGVCbG9ja3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEY0MjZBNDUxNDYwQ0JBQjAwMTMxRjhGIC8qIFZhbHVlUmVjb3ZlcnkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmFsdWVSZWNvdmVyeS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTk5NCw2ICsxOTk2LDcgQEAKIAkJCQk4NkFFNkM0QzEzNkExMUU0MDA5
NjMwMTIgLyogREZHR1BSSW5mby5oICovLAogCQkJCTg2RUM5REI3MTMyOERGODIwMDJCMkFENyAv
KiBERkdHcmFwaC5jcHAgKi8sCiAJCQkJODZFQzlEQjgxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0dy
YXBoLmggKi8sCisJCQkJMEYyQkRDMUYxNTFFODAzODAwQ0Q4OTEwIC8qIERGR0luc2VydGlvblNl
dC5oICovLAogCQkJCTg2RUM5REJCMTMyOERGODIwMDJCMkFENyAvKiBERkdKSVRDb21waWxlci5j
cHAgKi8sCiAJCQkJODZFQzlEQkMxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0pJVENvbXBpbGVyLmgg
Ki8sCiAJCQkJODZFQ0EzRTkxMzJERUYxQzAwMkIyQUQ3IC8qIERGR05vZGUuaCAqLywKQEAgLTI1
MDEsNiArMjUwNCw3IEBACiAJCQkJMEZBNTgxQkIxNTBFOTUzMDAwQjlBMkQ5IC8qIERGR05vZGVG
bGFncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBNTgxQkMxNTBFOTUzMDAwQjlBMkQ5IC8qIERG
R05vZGVUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCREMxNjE1MUM1RDRGMDBDRDg5MTAg
LyogREZHRml4dXBQaGFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyQkRDMjExNTFFODAzQjAw
Q0Q4OTEwIC8qIERGR0luc2VydGlvblNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlZGljdGVkVHlwZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVkaWN0ZWRUeXBlLmgJKHJldmlzaW9uIDEx
MjAyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVkaWN0ZWRUeXBlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE1OSwxMCArMTU5LDkgQEAgaW5saW5lIGJvb2wgaXNGbG9hdDY0
QXJyYXlQcmVkaWN0aW9uKFByZQogICAgIHJldHVybiB2YWx1ZSA9PSBQcmVkaWN0RmxvYXQ2NEFy
cmF5OwogfQogCi1pbmxpbmUgYm9vbCBpc0FjdGlvbmFibGVNdXRhYmxlQXJyYXlQcmVkaWN0aW9u
KFByZWRpY3RlZFR5cGUgdmFsdWUpCitpbmxpbmUgYm9vbCBpc0FjdGlvbmFibGVJbnRNdXRhYmxl
QXJyYXlQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIGlzQXJy
YXlQcmVkaWN0aW9uKHZhbHVlKQotICAgICAgICB8fCBpc0J5dGVBcnJheVByZWRpY3Rpb24odmFs
dWUpCisgICAgcmV0dXJuIGlzQnl0ZUFycmF5UHJlZGljdGlvbih2YWx1ZSkKICNpZiBDUFUoWDg2
KSB8fCBDUFUoWDg2XzY0KQogICAgICAgICB8fCBpc0ludDhBcnJheVByZWRpY3Rpb24odmFsdWUp
CiAgICAgICAgIHx8IGlzSW50MTZBcnJheVByZWRpY3Rpb24odmFsdWUpCkBAIC0xNzEsMTMgKzE3
MCwzMCBAQCBpbmxpbmUgYm9vbCBpc0FjdGlvbmFibGVNdXRhYmxlQXJyYXlQcmVkCiAgICAgICAg
IHx8IGlzVWludDhBcnJheVByZWRpY3Rpb24odmFsdWUpCiAgICAgICAgIHx8IGlzVWludDhDbGFt
cGVkQXJyYXlQcmVkaWN0aW9uKHZhbHVlKQogICAgICAgICB8fCBpc1VpbnQxNkFycmF5UHJlZGlj
dGlvbih2YWx1ZSkKLSAgICAgICAgfHwgaXNVaW50MzJBcnJheVByZWRpY3Rpb24odmFsdWUpCisg
ICAgICAgIHx8IGlzVWludDMyQXJyYXlQcmVkaWN0aW9uKHZhbHVlKTsKK30KKworaW5saW5lIGJv
b2wgaXNBY3Rpb25hYmxlRmxvYXRNdXRhYmxlQXJyYXlQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUg
dmFsdWUpCit7CisgICAgcmV0dXJuIGZhbHNlCiAjaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkK
ICAgICAgICAgfHwgaXNGbG9hdDMyQXJyYXlQcmVkaWN0aW9uKHZhbHVlKQogI2VuZGlmCiAgICAg
ICAgIHx8IGlzRmxvYXQ2NEFycmF5UHJlZGljdGlvbih2YWx1ZSk7CiB9CiAKK2lubGluZSBib29s
IGlzQWN0aW9uYWJsZVR5cGVkTXV0YWJsZUFycmF5UHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZh
bHVlKQoreworICAgIHJldHVybiBpc0FjdGlvbmFibGVJbnRNdXRhYmxlQXJyYXlQcmVkaWN0aW9u
KHZhbHVlKQorICAgICAgICB8fCBpc0FjdGlvbmFibGVGbG9hdE11dGFibGVBcnJheVByZWRpY3Rp
b24odmFsdWUpOworfQorCitpbmxpbmUgYm9vbCBpc0FjdGlvbmFibGVNdXRhYmxlQXJyYXlQcmVk
aWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCit7CisgICAgcmV0dXJuIGlzQXJyYXlQcmVkaWN0
aW9uKHZhbHVlKQorICAgICAgICB8fCBpc0FjdGlvbmFibGVUeXBlZE11dGFibGVBcnJheVByZWRp
Y3Rpb24odmFsdWUpOworfQorCiBpbmxpbmUgYm9vbCBpc0FjdGlvbmFibGVBcnJheVByZWRpY3Rp
b24oUHJlZGljdGVkVHlwZSB2YWx1ZSkKIHsKICAgICByZXR1cm4gaXNTdHJpbmdQcmVkaWN0aW9u
KHZhbHVlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
U3RhdGUuY3BwCShyZXZpc2lvbiAxMTIwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0U3RhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDAsNiArMzAwLDExIEBA
IGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAgICAgICAgCiAgICAg
ICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoUHJlZGljdEludDMyKTsKICAgICAgICAgYnJlYWs7
CisgICAgICAgIAorICAgIGNhc2UgSW50MzJUb0RvdWJsZToKKyAgICAgICAgZm9yTm9kZShub2Rl
LmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdE51bWJlcik7CisgICAgICAgIGZvck5vZGUobm9kZUlu
ZGV4KS5zZXQoUHJlZGljdERvdWJsZSk7CisgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAg
ICAgY2FzZSBWYWx1ZUFkZDoKICAgICBjYXNlIEFyaXRoQWRkOiB7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAkocmV2aXNpb24gMTEyMDI0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU4Nyw2ICs1ODcsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldFN0cmluZ0xlbmd0aDoK
ICAgICAgICAgY2FzZSBTdHJpbmdDaGFyQXQ6CiAgICAgICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVB
dDoKKyAgICAgICAgY2FzZSBJbnQzMlRvRG91YmxlOgogICAgICAgICAgICAgc2V0UmVwbGFjZW1l
bnQocHVyZUNTRShub2RlKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCShyZXZpc2lvbiAxMTIwMjQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC05Nyw5ICs5NywyMyBAQCBzdHJ1Y3QgTm9kZUluZGV4VHJhaXRzIHsKIAogZW51bSBVc2VLaW5k
IHsKICAgICBVbnR5cGVkVXNlLAorICAgIERvdWJsZVVzZSwKICAgICBMYXN0VXNlS2luZCAvLyBN
dXN0IGFsd2F5cyBiZSB0aGUgbGFzdCBlbnRyeSBpbiB0aGUgZW51bSwgYXMgaXQgaXMgdXNlZCB0
byBkZW5vdGUgdGhlIG51bWJlciBvZiBlbnVtIGVsZW1lbnRzLgogfTsKIAoraW5saW5lIGNvbnN0
IGNoYXIqIHVzZUtpbmRUb1N0cmluZyhVc2VLaW5kIHVzZUtpbmQpCit7CisgICAgc3dpdGNoICh1
c2VLaW5kKSB7CisgICAgY2FzZSBVbnR5cGVkVXNlOgorICAgICAgICByZXR1cm4gIiI7CisgICAg
Y2FzZSBEb3VibGVVc2U6CisgICAgICAgIHJldHVybiAiZCI7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKwog
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlz
aW9uIDExMjAyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoREZHX0pJVCkK
IAogI2luY2x1ZGUgIkRGR0dyYXBoLmgiCisjaW5jbHVkZSAiREZHSW5zZXJ0aW9uU2V0LmgiCiAj
aW5jbHVkZSAiREZHUGhhc2UuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewpA
QCAtNDIsMTEgKzQzLDIwIEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIHJ1bigpCiAgICAgewot
ICAgICAgICBmb3IgKG1fY29tcGlsZUluZGV4ID0gMDsgbV9jb21waWxlSW5kZXggPCBtX2dyYXBo
LnNpemUoKTsgKyttX2NvbXBpbGVJbmRleCkKLSAgICAgICAgICAgIGZpeHVwTm9kZShtX2dyYXBo
W21fY29tcGlsZUluZGV4XSk7CisgICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0g
MDsgYmxvY2tJbmRleCA8IG1fZ3JhcGgubV9ibG9ja3Muc2l6ZSgpOyArK2Jsb2NrSW5kZXgpCisg
ICAgICAgICAgICBmaXh1cEJsb2NrKG1fZ3JhcGgubV9ibG9ja3NbYmxvY2tJbmRleF0uZ2V0KCkp
OwogICAgIH0KIAogcHJpdmF0ZToKKyAgICB2b2lkIGZpeHVwQmxvY2soQmFzaWNCbG9jayogYmxv
Y2spCisgICAgeworICAgICAgICBmb3IgKG1faW5kZXhJbkJsb2NrID0gMDsgbV9pbmRleEluQmxv
Y2sgPCBibG9jay0+c2l6ZSgpOyArK21faW5kZXhJbkJsb2NrKSB7CisgICAgICAgICAgICBtX2Nv
bXBpbGVJbmRleCA9IGJsb2NrLT5hdChtX2luZGV4SW5CbG9jayk7CisgICAgICAgICAgICBmaXh1
cE5vZGUobV9ncmFwaFttX2NvbXBpbGVJbmRleF0pOworICAgICAgICB9CisgICAgICAgIG1faW5z
ZXJ0aW9uU2V0LmV4ZWN1dGUoKmJsb2NrKTsKKyAgICB9CisgICAgCiAgICAgdm9pZCBmaXh1cE5v
ZGUoTm9kZSYgbm9kZSkKICAgICB7CiAgICAgICAgIGlmICghbm9kZS5zaG91bGRHZW5lcmF0ZSgp
KQpAQCAtMTUyLDExICsxNjIsMTMwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICAgICAgCisgICAgICAgIGNhc2UgQ29tcGFyZUVxOgorICAgICAgICBj
YXNlIENvbXBhcmVMZXNzOgorICAgICAgICBjYXNlIENvbXBhcmVMZXNzRXE6CisgICAgICAgIGNh
c2UgQ29tcGFyZUdyZWF0ZXI6CisgICAgICAgIGNhc2UgQ29tcGFyZUdyZWF0ZXJFcToKKyAgICAg
ICAgY2FzZSBDb21wYXJlU3RyaWN0RXE6IHsKKyAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRT
cGVjdWxhdGVJbnRlZ2VyKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0sIG1fZ3JhcGhbbm9kZS5jaGls
ZDIoKV0pKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKCFOb2RlOjpz
aG91bGRTcGVjdWxhdGVOdW1iZXIobV9ncmFwaFtub2RlLmNoaWxkMSgpXSwgbV9ncmFwaFtub2Rl
LmNoaWxkMigpXSkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBmaXhEb3Vi
bGVFZGdlKDApOworICAgICAgICAgICAgZml4RG91YmxlRWRnZSgxKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBMb2dpY2FsTm90OiB7
CisgICAgICAgICAgICBpZiAobV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVjdWxhdGVJ
bnRlZ2VyKCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAoIW1fZ3Jh
cGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlTnVtYmVyKCkpCisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBmaXhEb3VibGVFZGdlKDApOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEJyYW5jaDogeworICAg
ICAgICAgICAgaWYgKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlSW50ZWdl
cigpKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKCFtX2dyYXBoW25v
ZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZU51bWJlcigpKQorICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgZml4RG91YmxlRWRnZSgwKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBTZXRMb2NhbDogeworICAgICAg
ICAgICAgaWYgKG1fZ3JhcGguaXNDYXB0dXJlZChub2RlLmxvY2FsKCkpKQorICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKCFub2RlLnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5z
aG91bGRVc2VEb3VibGVGb3JtYXQoKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGZpeERvdWJsZUVkZ2UoMCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
ICAgICAgICAgCisgICAgICAgIGNhc2UgQXJpdGhBZGQ6CisgICAgICAgIGNhc2UgVmFsdWVBZGQ6
IHsKKyAgICAgICAgICAgIGlmIChtX2dyYXBoLmFkZFNob3VsZFNwZWN1bGF0ZUludGVnZXIobm9k
ZSkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAoIU5vZGU6OnNob3Vs
ZFNwZWN1bGF0ZU51bWJlcihtX2dyYXBoW25vZGUuY2hpbGQxKCldLCBtX2dyYXBoW25vZGUuY2hp
bGQyKCldKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGZpeERvdWJsZUVk
Z2UoMCk7CisgICAgICAgICAgICBmaXhEb3VibGVFZGdlKDEpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEFyaXRoU3ViOiB7CisgICAg
ICAgICAgICBpZiAobV9ncmFwaC5hZGRTaG91bGRTcGVjdWxhdGVJbnRlZ2VyKG5vZGUpCisgICAg
ICAgICAgICAgICAgJiYgbm9kZS5jYW5TcGVjdWxhdGVJbnRlZ2VyKCkpCisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBmaXhEb3VibGVFZGdlKDApOworICAgICAgICAgICAgZml4
RG91YmxlRWRnZSgxKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgICAg
ICAKKyAgICAgICAgY2FzZSBBcml0aE5lZ2F0ZTogeworICAgICAgICAgICAgaWYgKG1fZ3JhcGgu
bmVnYXRlU2hvdWxkU3BlY3VsYXRlSW50ZWdlcihub2RlKSkKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGZpeERvdWJsZUVkZ2UoMCk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNhc2UgQXJpdGhNaW46CisgICAgICAgIGNh
c2UgQXJpdGhNYXg6CisgICAgICAgIGNhc2UgQXJpdGhNdWw6CisgICAgICAgIGNhc2UgQXJpdGhE
aXY6CisgICAgICAgIGNhc2UgQXJpdGhNb2Q6IHsKKyAgICAgICAgICAgIGlmIChOb2RlOjpzaG91
bGRTcGVjdWxhdGVJbnRlZ2VyKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0sIG1fZ3JhcGhbbm9kZS5j
aGlsZDIoKV0pCisgICAgICAgICAgICAgICAgJiYgbm9kZS5jYW5TcGVjdWxhdGVJbnRlZ2VyKCkp
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBmaXhEb3VibGVFZGdlKDApOwor
ICAgICAgICAgICAgZml4RG91YmxlRWRnZSgxKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBBcml0aEFiczogeworICAgICAgICAgICAg
aWYgKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlSW50ZWdlcigpCisgICAg
ICAgICAgICAgICAgJiYgbm9kZS5jYW5TcGVjdWxhdGVJbnRlZ2VyKCkpCisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBmaXhEb3VibGVFZGdlKDApOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEFyaXRoU3FydDogewor
ICAgICAgICAgICAgZml4RG91YmxlRWRnZSgwKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBQdXRCeVZhbDogeworICAgICAgICAgICAg
aWYgKCFtX2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKSB8fCAhbV9ncmFwaFtub2Rl
LmNoaWxkMigpXS5wcmVkaWN0aW9uKCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBpZiAoIW1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0uc2hvdWxkU3BlY3VsYXRlSW50ZWdlcigp
KQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKGlzQWN0aW9uYWJsZUlu
dE11dGFibGVBcnJheVByZWRpY3Rpb24obV9ncmFwaFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9u
KCkpKSB7CisgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGhbbm9kZS5jaGlsZDMoKV0uaXNDb25z
dGFudCgpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBpZiAo
bV9ncmFwaFtub2RlLmNoaWxkMygpXS5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyKCkpCisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGZpeERvdWJsZUVkZ2UoMik7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoaXNB
Y3Rpb25hYmxlRmxvYXRNdXRhYmxlQXJyYXlQcmVkaWN0aW9uKG1fZ3JhcGhbbm9kZS5jaGlsZDEo
KV0ucHJlZGljdGlvbigpKSkgeworICAgICAgICAgICAgICAgIGZpeERvdWJsZUVkZ2UoMik7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogCiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJC
T1NFKQorICAgICAgICBpZiAoIShub2RlLmZsYWdzKCkgJiBOb2RlSGFzVmFyQXJncykpIHsKKyAg
ICAgICAgICAgIGRhdGFMb2coIm5ldyBjaGlsZHJlbjogIik7CisgICAgICAgICAgICBub2RlLmR1
bXBDaGlsZHJlbihXVEY6OmRhdGFGaWxlKCkpOworICAgICAgICB9CiAgICAgICAgIGRhdGFMb2co
IlxuIik7CiAjZW5kaWYKICAgICB9CkBAIC0xNzksNyArMzA4LDM5IEBAIHByaXZhdGU6CiAgICAg
ICAgIGVkZ2UgPSBuZXdFZGdlOwogICAgIH0KICAgICAKKyAgICB2b2lkIGZpeERvdWJsZUVkZ2Uo
dW5zaWduZWQgY2hpbGRJbmRleCkKKyAgICB7CisgICAgICAgIE5vZGUmIHNvdXJjZSA9IG1fZ3Jh
cGhbbV9jb21waWxlSW5kZXhdOworICAgICAgICBFZGdlJiBlZGdlID0gc291cmNlLmNoaWxkcmVu
LmNoaWxkKGNoaWxkSW5kZXgpOworICAgICAgICAKKyAgICAgICAgaWYgKCFtX2dyYXBoW2VkZ2Vd
LnNob3VsZFNwZWN1bGF0ZUludGVnZXIoKSkgeworICAgICAgICAgICAgZWRnZS5zZXRVc2VLaW5k
KERvdWJsZVVzZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisg
ICAgICAgIE5vZGVJbmRleCByZXN1bHRJbmRleCA9IChOb2RlSW5kZXgpbV9ncmFwaC5zaXplKCk7
CisgICAgICAgIAorI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKKyAg
ICAgICAgZGF0YUxvZygiKHJlcGxhY2luZyBAJXUtPkAldSB3aXRoIEAldS0+QCV1KSAiLAorICAg
ICAgICAgICAgICAgIG1fY29tcGlsZUluZGV4LCBlZGdlLmluZGV4KCksIG1fY29tcGlsZUluZGV4
LCByZXN1bHRJbmRleCk7CisjZW5kaWYKKyAgICAgICAgCisgICAgICAgIC8vIEZpeCB0aGUgZWRn
ZSB1cCBoZXJlIGJlY2F1c2UgaXQncyBhIHJlZmVyZW5jZSB0aGF0IHdpbGwgYmUgY2xvYmJlcmVk
IGJ5CisgICAgICAgIC8vIHRoZSBhcHBlbmQoKSBiZWxvdy4KKyAgICAgICAgTm9kZUluZGV4IG9s
ZEluZGV4ID0gZWRnZS5pbmRleCgpOworICAgICAgICBlZGdlID0gRWRnZShyZXN1bHRJbmRleCwg
RG91YmxlVXNlKTsKKworICAgICAgICBtX2dyYXBoLmFwcGVuZChOb2RlKEludDMyVG9Eb3VibGUs
IHNvdXJjZS5jb2RlT3JpZ2luLCBvbGRJbmRleCkpOworICAgICAgICBtX2luc2VydGlvblNldC5h
cHBlbmQobV9pbmRleEluQmxvY2ssIHJlc3VsdEluZGV4KTsKKyAgICAgICAgCisgICAgICAgIE5v
ZGUmIGludDMyVG9Eb3VibGUgPSBtX2dyYXBoW3Jlc3VsdEluZGV4XTsKKyAgICAgICAgaW50MzJU
b0RvdWJsZS5wcmVkaWN0KFByZWRpY3REb3VibGUpOworICAgICAgICBpbnQzMlRvRG91YmxlLnJl
ZigpOworICAgIH0KKyAgICAKKyAgICB1bnNpZ25lZCBtX2luZGV4SW5CbG9jazsKICAgICBOb2Rl
SW5kZXggbV9jb21waWxlSW5kZXg7CisgICAgSW5zZXJ0aW9uU2V0PE5vZGVJbmRleD4gbV9pbnNl
cnRpb25TZXQ7CiB9OwogICAgIAogdm9pZCBwZXJmb3JtRml4dXAoR3JhcGgmIGdyYXBoKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHJldmlzaW9uIDExMjAyNCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNjMsMTUgKzE2MywzMCBAQCB2b2lkIEdyYXBoOjpkdW1wKE5vZGVJbmRleCBub2RlSW5k
ZXgpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiLCAiKTsKICAgICAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgICAgICBoYXNQcmludGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIGRhdGFMb2coIkAl
dSVzIiwgbV92YXJBcmdDaGlsZHJlbltjaGlsZElkeF0uaW5kZXgoKSwgcHJlZGljdGlvblRvQWJi
cmV2aWF0ZWRTdHJpbmcoYXQoY2hpbGRJZHgpLnByZWRpY3Rpb24oKSkpOworICAgICAgICAgICAg
ZGF0YUxvZygiJXNAJXUlcyIsCisgICAgICAgICAgICAgICAgICAgIHVzZUtpbmRUb1N0cmluZyht
X3ZhckFyZ0NoaWxkcmVuW2NoaWxkSWR4XS51c2VLaW5kKCkpLAorICAgICAgICAgICAgICAgICAg
ICBtX3ZhckFyZ0NoaWxkcmVuW2NoaWxkSWR4XS5pbmRleCgpLAorICAgICAgICAgICAgICAgICAg
ICBwcmVkaWN0aW9uVG9BYmJyZXZpYXRlZFN0cmluZyhhdChjaGlsZElkeCkucHJlZGljdGlvbigp
KSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICBpZiAoISFub2RlLmNoaWxkMSgp
KQotICAgICAgICAgICAgZGF0YUxvZygiQCV1JXMiLCBub2RlLmNoaWxkMSgpLmluZGV4KCksIHBy
ZWRpY3Rpb25Ub0FiYnJldmlhdGVkU3RyaW5nKGF0KG5vZGUuY2hpbGQxKCkpLnByZWRpY3Rpb24o
KSkpOwotICAgICAgICBpZiAoISFub2RlLmNoaWxkMigpKQotICAgICAgICAgICAgZGF0YUxvZygi
LCBAJXUlcyIsIG5vZGUuY2hpbGQyKCkuaW5kZXgoKSwgcHJlZGljdGlvblRvQWJicmV2aWF0ZWRT
dHJpbmcoYXQobm9kZS5jaGlsZDIoKSkucHJlZGljdGlvbigpKSk7Ci0gICAgICAgIGlmICghIW5v
ZGUuY2hpbGQzKCkpCi0gICAgICAgICAgICBkYXRhTG9nKCIsIEAldSVzIiwgbm9kZS5jaGlsZDMo
KS5pbmRleCgpLCBwcmVkaWN0aW9uVG9BYmJyZXZpYXRlZFN0cmluZyhhdChub2RlLmNoaWxkMygp
KS5wcmVkaWN0aW9uKCkpKTsKKyAgICAgICAgaWYgKCEhbm9kZS5jaGlsZDEoKSkgeworICAgICAg
ICAgICAgZGF0YUxvZygiJXNAJXUlcyIsCisgICAgICAgICAgICAgICAgICAgIHVzZUtpbmRUb1N0
cmluZyhub2RlLmNoaWxkMSgpLnVzZUtpbmQoKSksCisgICAgICAgICAgICAgICAgICAgIG5vZGUu
Y2hpbGQxKCkuaW5kZXgoKSwKKyAgICAgICAgICAgICAgICAgICAgcHJlZGljdGlvblRvQWJicmV2
aWF0ZWRTdHJpbmcoYXQobm9kZS5jaGlsZDEoKSkucHJlZGljdGlvbigpKSk7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKCEhbm9kZS5jaGlsZDIoKSkgeworICAgICAgICAgICAgZGF0YUxvZygiLCAl
c0AldSVzIiwKKyAgICAgICAgICAgICAgICAgICAgdXNlS2luZFRvU3RyaW5nKG5vZGUuY2hpbGQy
KCkudXNlS2luZCgpKSwKKyAgICAgICAgICAgICAgICAgICAgbm9kZS5jaGlsZDIoKS5pbmRleCgp
LAorICAgICAgICAgICAgICAgICAgICBwcmVkaWN0aW9uVG9BYmJyZXZpYXRlZFN0cmluZyhhdChu
b2RlLmNoaWxkMigpKS5wcmVkaWN0aW9uKCkpKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoISFu
b2RlLmNoaWxkMygpKSB7CisgICAgICAgICAgICBkYXRhTG9nKCIsICVzQCV1JXMiLAorICAgICAg
ICAgICAgICAgICAgICB1c2VLaW5kVG9TdHJpbmcobm9kZS5jaGlsZDMoKS51c2VLaW5kKCkpLAor
ICAgICAgICAgICAgICAgICAgICBub2RlLmNoaWxkMygpLmluZGV4KCksCisgICAgICAgICAgICAg
ICAgICAgIHByZWRpY3Rpb25Ub0FiYnJldmlhdGVkU3RyaW5nKGF0KG5vZGUuY2hpbGQzKCkpLnBy
ZWRpY3Rpb24oKSkpOworICAgICAgICB9CiAgICAgICAgIGhhc1ByaW50ZWQgPSAhIW5vZGUuY2hp
bGQxKCk7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luc2Vy
dGlvblNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5z
ZXJ0aW9uU2V0LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0luc2VydGlvblNldC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDk4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgREZHSW5zZXJ0aW9u
U2V0X2gKKyNkZWZpbmUgREZHSW5zZWN0aW9uU2V0X2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9y
bS5oPgorCisjaWYgRU5BQkxFKERGR19KSVQpCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisK
K25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgRWxl
bWVudFR5cGU+CitjbGFzcyBJbnNlcnRpb24geworcHVibGljOgorICAgIEluc2VydGlvbigpIHsg
fQorICAgIAorICAgIEluc2VydGlvbihzaXplX3QgaW5kZXgsIGNvbnN0IEVsZW1lbnRUeXBlJiBl
bGVtZW50KQorICAgICAgICA6IG1faW5kZXgoaW5kZXgpCisgICAgICAgICwgbV9lbGVtZW50KGVs
ZW1lbnQpCisgICAgeworICAgIH0KKyAgICAKKyAgICBzaXplX3QgaW5kZXgoKSBjb25zdCB7IHJl
dHVybiBtX2luZGV4OyB9CisgICAgY29uc3QgRWxlbWVudFR5cGUmIGVsZW1lbnQoKSBjb25zdCB7
IHJldHVybiBtX2VsZW1lbnQ7IH0KK3ByaXZhdGU6CisgICAgc2l6ZV90IG1faW5kZXg7CisgICAg
RWxlbWVudFR5cGUgbV9lbGVtZW50OworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgRWxlbWVudFR5
cGU+CitjbGFzcyBJbnNlcnRpb25TZXQgeworcHVibGljOgorICAgIEluc2VydGlvblNldCgpIHsg
fQorICAgIAorICAgIHZvaWQgYXBwZW5kKGNvbnN0IEluc2VydGlvbjxFbGVtZW50VHlwZT4mIGlu
c2VydGlvbikKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV9pbnNlcnRpb25zLnNpemUoKSB8fCBt
X2luc2VydGlvbnMubGFzdCgpLmluZGV4KCkgPD0gaW5zZXJ0aW9uLmluZGV4KCkpOworICAgICAg
ICBtX2luc2VydGlvbnMuYXBwZW5kKGluc2VydGlvbik7CisgICAgfQorICAgIAorICAgIHZvaWQg
YXBwZW5kKHNpemVfdCBpbmRleCwgY29uc3QgRWxlbWVudFR5cGUmIGVsZW1lbnQpCisgICAgewor
ICAgICAgICBhcHBlbmQoSW5zZXJ0aW9uPEVsZW1lbnRUeXBlPihpbmRleCwgZWxlbWVudCkpOwor
ICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xsZWN0aW9uVHlwZT4KKyAgICB2
b2lkIGV4ZWN1dGUoQ29sbGVjdGlvblR5cGUmIGNvbGxlY3Rpb24pCisgICAgeworICAgICAgICBp
ZiAoIW1faW5zZXJ0aW9ucy5zaXplKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNv
bGxlY3Rpb24uZ3Jvdyhjb2xsZWN0aW9uLnNpemUoKSArIG1faW5zZXJ0aW9ucy5zaXplKCkpOwor
ICAgICAgICBzaXplX3QgbGFzdEluZGV4ID0gY29sbGVjdGlvbi5zaXplKCk7CisgICAgICAgIGZv
ciAoc2l6ZV90IGluZGV4SW5JbnNlcnRpb25zID0gbV9pbnNlcnRpb25zLnNpemUoKTsgaW5kZXhJ
bkluc2VydGlvbnMtLTspIHsKKyAgICAgICAgICAgIEluc2VydGlvbjxFbGVtZW50VHlwZT4mIGlu
c2VydGlvbiA9IG1faW5zZXJ0aW9uc1tpbmRleEluSW5zZXJ0aW9uc107CisgICAgICAgICAgICBz
aXplX3QgZmlyc3RJbmRleCA9IGluc2VydGlvbi5pbmRleCgpICsgaW5kZXhJbkluc2VydGlvbnM7
CisgICAgICAgICAgICBzaXplX3QgaW5kZXhPZmZzZXQgPSBpbmRleEluSW5zZXJ0aW9ucyArIDE7
CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gbGFzdEluZGV4OyBpLS0gPiBmaXJzdEluZGV4
OykKKyAgICAgICAgICAgICAgICBjb2xsZWN0aW9uW2ldID0gY29sbGVjdGlvbltpIC0gaW5kZXhP
ZmZzZXRdOworICAgICAgICAgICAgY29sbGVjdGlvbltmaXJzdEluZGV4XSA9IGluc2VydGlvbi5l
bGVtZW50KCk7CisgICAgICAgICAgICBsYXN0SW5kZXggPSBmaXJzdEluZGV4OworICAgICAgICB9
CisgICAgICAgIG1faW5zZXJ0aW9ucy5yZXNpemUoMCk7CisgICAgfQorcHJpdmF0ZToKKyAgICBW
ZWN0b3I8SW5zZXJ0aW9uPEVsZW1lbnRUeXBlPiwgOD4gbV9pbnNlcnRpb25zOworfTsKKworfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkRGRworCisjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCisKKyNl
bmRpZiAvLyBERkdJbnNlcnRpb25TZXRfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGVUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlVHlwZS5oCShyZXZpc2lvbiAxMTIwMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc1LDYgKzc1LDkgQEAgbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKFZhbHVlVG9JbnQzMiwgTm9k
ZVJlc3VsdEludDMyIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIC8qIFVzZWQgdG8gYm94IHRo
ZSByZXN1bHQgb2YgVVJTaGlmdCBub2RlcyAocmVzdWx0IGhhcyByYW5nZSAwLi4yXjMyLTEpLiAq
L1wKICAgICBtYWNybyhVSW50MzJUb051bWJlciwgTm9kZVJlc3VsdE51bWJlcikgXAorICAgIC8q
IFVzZWQgdG8gY2FzdCBrbm93biBpbnRlZ2VycyB0byBkb3VibGVzLCBzbyBhcyB0byBzZXBhcmF0
ZSB0aGUgZG91YmxlIGZvcm0gKi9cCisgICAgLyogb2YgdGhlIHZhbHVlIGZyb20gdGhlIGludGVn
ZXIgZm9ybS4gKi9cCisgICAgbWFjcm8oSW50MzJUb0RvdWJsZSwgTm9kZVJlc3VsdE51bWJlcikg
XAogICAgIFwKICAgICAvKiBOb2RlcyBmb3IgYXJpdGhtZXRpYyBvcGVyYXRpb25zLiAqL1wKICAg
ICBtYWNybyhBcml0aEFkZCwgTm9kZVJlc3VsdE51bWJlcikgXApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25Q
aGFzZS5jcHAJKHJldmlzaW9uIDExMjAyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Njks
NyArNTY5LDggQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXRVaW50MzJBcnJheUxlbmd0aDoK
ICAgICAgICAgY2FzZSBHZXRGbG9hdDMyQXJyYXlMZW5ndGg6CiAgICAgICAgIGNhc2UgR2V0Rmxv
YXQ2NEFycmF5TGVuZ3RoOgotICAgICAgICBjYXNlIEdldFN0cmluZ0xlbmd0aDogeworICAgICAg
ICBjYXNlIEdldFN0cmluZ0xlbmd0aDoKKyAgICAgICAgY2FzZSBJbnQzMlRvRG91YmxlOiB7CiAg
ICAgICAgICAgICAvLyBUaGlzIG5vZGUgc2hvdWxkIG5ldmVyIGJlIHZpc2libGUgYXQgdGhpcyBz
dGFnZSBvZiBjb21waWxhdGlvbi4gSXQgaXMKICAgICAgICAgICAgIC8vIGluc2VydGVkIGJ5IGZp
eHVwKCksIHdoaWNoIGZvbGxvd3MgdGhpcyBwaGFzZS4KICAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAxMTIwMjQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xODc4LDYgKzE4NzgsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
JiBub2RlKQogICAgICAgICBjb21waWxlVmFsdWVUb0ludDMyKG5vZGUpOwogICAgICAgICBicmVh
azsKICAgICB9CisgICAgICAgIAorICAgIGNhc2UgSW50MzJUb0RvdWJsZTogeworICAgICAgICBj
b21waWxlSW50MzJUb0RvdWJsZShub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogCiAgICAg
Y2FzZSBWYWx1ZUFkZDoKICAgICBjYXNlIEFyaXRoQWRkOgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxMTIw
MjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xOTY1LDYgKzE5NjUsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBjb21waWxlVmFsdWVUb0ludDMyKG5vZGUp
OwogICAgICAgICBicmVhazsKICAgICB9CisgICAgICAgIAorICAgIGNhc2UgSW50MzJUb0RvdWJs
ZTogeworICAgICAgICBjb21waWxlSW50MzJUb0RvdWJsZShub2RlKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQogCiAgICAgY2FzZSBWYWx1ZUFkZDoKICAgICBjYXNlIEFyaXRoQWRkOgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJl
dmlzaW9uIDExMjAyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjg0LDYgKzEyODQsMTAgQEAgVmFsdWVSZWNv
dmVyeSBTcGVjdWxhdGl2ZUpJVDo6Y29tcHV0ZVZhbAogICAgICAgICAgICAgLy8gVHJ5IHRvIHNl
ZSBpZiB0aGVyZSBpcyBhbiBhbHRlcm5hdGUgbm9kZSB0aGF0IHdvdWxkIGNvbnRhaW4gdGhlIHZh
bHVlIHdlIHdhbnQuCiAgICAgICAgICAgICAvLyBUaGVyZSBhcmUgZm91ciBwb3NzaWJpbGl0aWVz
OgogICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIEludDMyVG9Eb3VibGU6IFdlIGNhbiB1
c2UgdGhpcyBpbiBwbGFjZSBvZiB0aGUgb3JpZ2luYWwgbm9kZSwgYnV0CisgICAgICAgICAgICAv
LyAgICB3ZSdkIHJhdGhlciBub3Q7IHNvIHdlIHVzZSBpdCBvbmx5IGlmIGl0IGlzIHRoZSBvbmx5
IHJlbWFpbmluZworICAgICAgICAgICAgLy8gICAgbGl2ZSB2ZXJzaW9uLgorICAgICAgICAgICAg
Ly8KICAgICAgICAgICAgIC8vIFZhbHVlVG9JbnQzMjogSWYgdGhlIG9ubHkgcmVtYWluaW5nIGxp
dmUgdmVyc2lvbiBvZiB0aGUgdmFsdWUgaXMKICAgICAgICAgICAgIC8vICAgIFZhbHVlVG9JbnQz
MiwgdGhlbiB3ZSBjYW4gdXNlIGl0LgogICAgICAgICAgICAgLy8KQEAgLTEzMDYsNiArMTMxMCw3
IEBAIFZhbHVlUmVjb3ZlcnkgU3BlY3VsYXRpdmVKSVQ6OmNvbXB1dGVWYWwKICAgICAgICAgICAg
IH0KICAgICAgICAgCiAgICAgICAgICAgICBpZiAoIWZvdW5kKSB7CisgICAgICAgICAgICAgICAg
Tm9kZUluZGV4IGludDMyVG9Eb3VibGVJbmRleCA9IE5vTm9kZTsKICAgICAgICAgICAgICAgICBO
b2RlSW5kZXggdmFsdWVUb0ludDMySW5kZXggPSBOb05vZGU7CiAgICAgICAgICAgICAgICAgTm9k
ZUluZGV4IHVpbnQzMlRvTnVtYmVySW5kZXggPSBOb05vZGU7CiAgICAgICAgICAgICAKQEAgLTEz
MTksNiArMTMyNCw5IEBAIFZhbHVlUmVjb3ZlcnkgU3BlY3VsYXRpdmVKSVQ6OmNvbXB1dGVWYWwK
ICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUuY2hpbGQxVW5jaGVja2VkKCkgIT0gdmFsdWVT
b3VyY2Uubm9kZUluZGV4KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLm9wKCkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgY2FzZSBJbnQzMlRvRG91YmxlOgorICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJUb0Rv
dWJsZUluZGV4ID0gaW5mby5ub2RlSW5kZXgoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgICAgICBjYXNlIFZhbHVlVG9JbnQzMjoKICAgICAgICAgICAg
ICAgICAgICAgICAgIHZhbHVlVG9JbnQzMkluZGV4ID0gaW5mby5ub2RlSW5kZXgoKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTMzMSw3ICsxMzM5LDkgQEAgVmFsdWVSZWNv
dmVyeSBTcGVjdWxhdGl2ZUpJVDo6Y29tcHV0ZVZhbAogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgIE5vZGVJbmRleCBub2RlSW5kZXhUb1VzZTsKLSAgICAg
ICAgICAgICAgICBpZiAodmFsdWVUb0ludDMySW5kZXggIT0gTm9Ob2RlKQorICAgICAgICAgICAg
ICAgIGlmIChpbnQzMlRvRG91YmxlSW5kZXggIT0gTm9Ob2RlKQorICAgICAgICAgICAgICAgICAg
ICBub2RlSW5kZXhUb1VzZSA9IGludDMyVG9Eb3VibGVJbmRleDsKKyAgICAgICAgICAgICAgICBl
bHNlIGlmICh2YWx1ZVRvSW50MzJJbmRleCAhPSBOb05vZGUpCiAgICAgICAgICAgICAgICAgICAg
IG5vZGVJbmRleFRvVXNlID0gdmFsdWVUb0ludDMySW5kZXg7CiAgICAgICAgICAgICAgICAgZWxz
ZSBpZiAodWludDMyVG9OdW1iZXJJbmRleCAhPSBOb05vZGUpCiAgICAgICAgICAgICAgICAgICAg
IG5vZGVJbmRleFRvVXNlID0gdWludDMyVG9OdW1iZXJJbmRleDsKQEAgLTE1MzcsNyArMTU0Nyw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZVRvSW50MzIKICAgICAgICAgfQog
ICAgICAgICBjYXNlIEdlbmVyYXRlZE9wZXJhbmREb3VibGU6IHsKICAgICAgICAgICAgIEdQUlRl
bXBvcmFyeSByZXN1bHQodGhpcyk7Ci0gICAgICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5k
IG9wMSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICAgICAgICAgIERvdWJsZU9wZXJhbmQgb3Ax
KHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICAgICAgRlBSUmVnIGZwciA9IG9wMS5mcHIo
KTsKICAgICAgICAgICAgIEdQUlJlZyBncHIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAgICAgICBK
SVRDb21waWxlcjo6SnVtcCB0cnVuY2F0ZWRUb0ludGVnZXIgPSBtX2ppdC5icmFuY2hUcnVuY2F0
ZURvdWJsZVRvSW50MzIoZnByLCBncHIsIEpJVENvbXBpbGVyOjpCcmFuY2hJZlRydW5jYXRlU3Vj
Y2Vzc2Z1bCk7CkBAIC0xNjc0LDYgKzE2ODQsODIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVVJbnQzMlRvTnVtYgogICAgIGludGVnZXJSZXN1bHQocmVzdWx0LmdwcigpLCBtX2NvbXBp
bGVJbmRleCwgb3AxLmZvcm1hdCgpKTsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUludDMyVG9Eb3VibGUoTm9kZSYgbm9kZSkKK3sKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIC8v
IE9uIEpTVkFMVUU2NCB3ZSBoYXZlIGEgd2F5IG9mIGxvYWRpbmcgZG91YmxlIGNvbnN0YW50cyBp
biBhIG1vcmUgZGlyZWN0IG1hbm5lcgorICAgIC8vIHRoYW4gYSBpbnQtPmRvdWJsZSBjb252ZXJz
aW9uLiBPbiAzMl82NCwgdW5mb3J0dW5hdGVseSwgd2UgY3VycmVudGx5IGRvbid0IGhhdmUKKyAg
ICAvLyBhbnkgc3VjaCBtZWNoYW5pc20gLSB0aG91Z2ggd2UgY291bGQgaGF2ZSBpdCwgaWYgd2Ug
anVzdCBwcm92aXNpb25lZCBzb21lIG1lbW9yeQorICAgIC8vIGluIENvZGVCbG9jayBmb3IgdGhl
IGRvdWJsZSBmb3JtIG9mIGludGVnZXIgY29uc3RhbnRzLgorICAgIGlmIChhdChub2RlLmNoaWxk
MSgpKS5oYXNDb25zdGFudCgpKSB7CisgICAgICAgIEFTU0VSVChpc0ludDMyQ29uc3RhbnQobm9k
ZS5jaGlsZDEoKS5pbmRleCgpKSk7CisgICAgICAgIEZQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7
CisgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOworICAgICAgICBtX2ppdC5tb3ZlKE1h
Y3JvQXNzZW1ibGVyOjpJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVpbnRlcnByZXRE
b3VibGVUb0ludHB0cih2YWx1ZU9mTnVtYmVyQ29uc3RhbnQobm9kZS5jaGlsZDEoKS5pbmRleCgp
KSkpKSwgdGVtcC5ncHIoKSk7CisgICAgICAgIG1faml0Lm1vdmVQdHJUb0RvdWJsZSh0ZW1wLmdw
cigpLCByZXN1bHQuZnByKCkpOworICAgICAgICBkb3VibGVSZXN1bHQocmVzdWx0LmZwcigpLCBt
X2NvbXBpbGVJbmRleCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKyAgICAKKyAg
ICBpZiAoaXNJbnQzMlByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1f
dHlwZSkpIHsKKyAgICAgICAgU3BlY3VsYXRlSW50ZWdlck9wZXJhbmQgb3AxKHRoaXMsIG5vZGUu
Y2hpbGQxKCkpOworICAgICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAgICBt
X2ppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShvcDEuZ3ByKCksIHJlc3VsdC5mcHIoKSk7CisgICAg
ICAgIGRvdWJsZVJlc3VsdChyZXN1bHQuZnByKCksIG1fY29tcGlsZUluZGV4KTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICAKKyAgICBKU1ZhbHVlT3BlcmFuZCBvcDEodGhpcywgbm9kZS5j
aGlsZDEoKSk7CisgICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAKKyNpZiBVU0Uo
SlNWQUxVRTY0KQorICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOworCisgICAgR1BSUmVnIG9w
MUdQUiA9IG9wMS5ncHIoKTsKKyAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7CisgICAg
RlBSUmVnIHJlc3VsdEZQUiA9IHJlc3VsdC5mcHIoKTsKKyAgICAKKyAgICBKSVRDb21waWxlcjo6
SnVtcCBpc0ludGVnZXIgPSBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpBYm92ZU9yRXF1YWwsIG9wMUdQUiwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsK
KyAgICAKKyAgICBzcGVjdWxhdGlvbkNoZWNrKAorICAgICAgICBCYWRUeXBlLCBKU1ZhbHVlUmVn
cyhvcDFHUFIpLCBub2RlLmNoaWxkMSgpLAorICAgICAgICBtX2ppdC5icmFuY2hUZXN0UHRyKE1h
Y3JvQXNzZW1ibGVyOjpaZXJvLCBvcDFHUFIsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rl
cikpOworICAgIAorICAgIG1faml0Lm1vdmUob3AxR1BSLCB0ZW1wR1BSKTsKKyAgICB1bmJveERv
dWJsZSh0ZW1wR1BSLCByZXN1bHRGUFIpOworICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmUgPSBt
X2ppdC5qdW1wKCk7CisgICAgCisgICAgaXNJbnRlZ2VyLmxpbmsoJm1faml0KTsKKyAgICBtX2pp
dC5jb252ZXJ0SW50MzJUb0RvdWJsZShvcDFHUFIsIHJlc3VsdEZQUik7CisgICAgZG9uZS5saW5r
KCZtX2ppdCk7CisjZWxzZQorICAgIEZQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOworICAgIAorICAg
IEdQUlJlZyBvcDFUYWdHUFIgPSBvcDEudGFnR1BSKCk7CisgICAgR1BSUmVnIG9wMVBheWxvYWRH
UFIgPSBvcDEucGF5bG9hZEdQUigpOworICAgIEZQUlJlZyB0ZW1wRlBSID0gdGVtcC5mcHIoKTsK
KyAgICBGUFJSZWcgcmVzdWx0RlBSID0gcmVzdWx0LmZwcigpOworICAgIAorICAgIEpJVENvbXBp
bGVyOjpKdW1wIGlzSW50ZWdlciA9IG1faml0LmJyYW5jaDMyKAorICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6RXF1YWwsIG9wMVRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSk7
CisgICAgCisgICAgc3BlY3VsYXRpb25DaGVjaygKKyAgICAgICAgQmFkVHlwZSwgSlNWYWx1ZVJl
Z3Mob3AxVGFnR1BSLCBvcDFQYXlsb2FkR1BSKSwgbm9kZS5jaGlsZDEoKSwKKyAgICAgICAgbV9q
aXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgb3AxVGFnR1BSLCBUcnVz
dGVkSW1tMzIoSlNWYWx1ZTo6TG93ZXN0VGFnKSkpOworICAgIAorICAgIHVuYm94RG91YmxlKG9w
MVRhZ0dQUiwgb3AxUGF5bG9hZEdQUiwgcmVzdWx0RlBSLCB0ZW1wRlBSKTsKKyAgICBKSVRDb21w
aWxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOworICAgIAorICAgIGlzSW50ZWdlci5saW5r
KCZtX2ppdCk7CisgICAgbV9qaXQuY29udmVydEludDMyVG9Eb3VibGUob3AxUGF5bG9hZEdQUiwg
cmVzdWx0RlBSKTsKKyAgICBkb25lLmxpbmsoJm1faml0KTsKKyNlbmRpZgorICAgIAorICAgIGRv
dWJsZVJlc3VsdChyZXN1bHRGUFIsIG1fY29tcGlsZUluZGV4KTsKK30KKwogc3RhdGljIGRvdWJs
ZSBjbGFtcERvdWJsZVRvQnl0ZShkb3VibGUgZCkKIHsKICAgICBkICs9IDAuNTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9u
IDExMjAyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
aAkod29ya2luZyBjb3B5KQpAQCAtMTczMiw2ICsxNzMyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGNvbXBpbGVHZXRCeVZhbE9uU3RyaW5nKE5vZGUmKTsKICAgICB2b2lkIGNvbXBpbGVWYWx1ZVRv
SW50MzIoTm9kZSYpOwogICAgIHZvaWQgY29tcGlsZVVJbnQzMlRvTnVtYmVyKE5vZGUmKTsKKyAg
ICB2b2lkIGNvbXBpbGVJbnQzMlRvRG91YmxlKE5vZGUmKTsKICAgICB2b2lkIGNvbXBpbGVHZXRC
eVZhbE9uQnl0ZUFycmF5KE5vZGUmKTsKICAgICB2b2lkIGNvbXBpbGVQdXRCeVZhbEZvckJ5dGVB
cnJheShHUFJSZWcgYmFzZSwgR1BSUmVnIHByb3BlcnR5LCBOb2RlJik7CiAgICAgdm9pZCBjb21w
aWxlQWRkKE5vZGUmKTsKQEAgLTE5ODQsNiArMTk4NSw3IEBAIHB1YmxpYzoKICNlbmRpZgogICAg
IHsKICAgICAgICAgQVNTRVJUKG1faml0KTsKKyAgICAgICAgQVNTRVJUKHVzZS51c2VLaW5kKCkg
IT0gRG91YmxlVXNlKTsKICAgICAgICAgaWYgKGppdC0+aXNGaWxsZWQobV9pbmRleCkpCiAgICAg
ICAgICAgICBncHIoKTsKICAgICB9CkBAIC0yMDMzLDYgKzIwMzUsMTUgQEAgcHVibGljOgogICAg
ICAgICAsIG1fZnByT3JJbnZhbGlkKEludmFsaWRGUFJSZWcpCiAgICAgewogICAgICAgICBBU1NF
UlQobV9qaXQpOworICAgICAgICAKKyAgICAgICAgLy8gVGhpcyBpcyBjb3VudGVyLWludHVpdGl2
ZSBidXQgY29ycmVjdC4gRG91YmxlT3BlcmFuZCBpcyBpbnRlbmRlZCB0bworICAgICAgICAvLyBi
ZSB1c2VkIG9ubHkgd2hlbiB5b3UncmUgYSBub2RlIHRoYXQgaXMgaGFwcHkgdG8gYWNjZXB0IGFu
IHVudHlwZWQKKyAgICAgICAgLy8gdmFsdWUsIGJ1dCB3aWxsIHNwZWNpYWwtY2FzZSBmb3IgZG91
YmxlcyAodXNpbmcgRG91YmxlT3BlcmFuZCkgaWYgdGhlCisgICAgICAgIC8vIHZhbHVlIGhhcHBl
bmVkIHRvIGFscmVhZHkgYmUgcmVwcmVzZW50ZWQgYXMgYSBkb3VibGUuIFRoZSBpbXBsaWNhdGlv
bgorICAgICAgICAvLyBpcyB0aGF0IHlvdSB3aWxsIG5vdCB0cnkgdG8gZm9yY2UgdGhlIHZhbHVl
IHRvIGJlY29tZSBhIGRvdWJsZSBpZiBpdAorICAgICAgICAvLyBpcyBub3Qgb25lIGFscmVhZHku
CisgICAgICAgIEFTU0VSVCh1c2UudXNlS2luZCgpICE9IERvdWJsZVVzZSk7CisgICAgICAgIAog
ICAgICAgICBpZiAoaml0LT5pc0ZpbGxlZERvdWJsZShtX2luZGV4KSkKICAgICAgICAgICAgIGZw
cigpOwogICAgIH0KQEAgLTIwNzgsNiArMjA4OSw3IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIHsK
ICAgICAgICAgQVNTRVJUKG1faml0KTsKKyAgICAgICAgQVNTRVJUKHVzZS51c2VLaW5kKCkgIT0g
RG91YmxlVXNlKTsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBpZiAoaml0LT5pc0ZpbGxl
ZChtX2luZGV4KSkKICAgICAgICAgICAgIGdwcigpOwpAQCAtMjE4OCw2ICsyMjAwLDcgQEAgcHVi
bGljOgogICAgICAgICAsIG1fZ3ByT3JJbnZhbGlkKEludmFsaWRHUFJSZWcpCiAgICAgewogICAg
ICAgICBBU1NFUlQobV9qaXQpOworICAgICAgICBBU1NFUlQodXNlLnVzZUtpbmQoKSAhPSBEb3Vi
bGVVc2UpOwogICAgICAgICBpZiAoaml0LT5pc0ZpbGxlZChtX2luZGV4KSkKICAgICAgICAgICAg
IGdwcigpOwogICAgIH0KQEAgLTIzNjAsNiArMjM3Myw3IEBAIHB1YmxpYzoKICNlbmRpZgogICAg
IHsKICAgICAgICAgQVNTRVJUKG1faml0KTsKKyAgICAgICAgQVNTRVJUKHVzZS51c2VLaW5kKCkg
IT0gRG91YmxlVXNlKTsKICAgICAgICAgaWYgKGppdC0+aXNGaWxsZWQobV9pbmRleCkpCiAgICAg
ICAgICAgICBncHIoKTsKICAgICB9CkBAIC0yNDA0LDYgKzI0MTgsNyBAQCBwdWJsaWM6CiAgICAg
ICAgICwgbV9ncHJPckludmFsaWQoSW52YWxpZEdQUlJlZykKICAgICB7CiAgICAgICAgIEFTU0VS
VChtX2ppdCk7CisgICAgICAgIEFTU0VSVCh1c2UudXNlS2luZCgpICE9IERvdWJsZVVzZSk7CiAg
ICAgICAgIGlmIChqaXQtPmlzRmlsbGVkKG1faW5kZXgpKQogICAgICAgICAgICAgZ3ByKCk7CiAg
ICAgfQpAQCAtMjQ0NSw2ICsyNDYwLDcgQEAgcHVibGljOgogICAgICAgICAsIG1fZnByT3JJbnZh
bGlkKEludmFsaWRGUFJSZWcpCiAgICAgewogICAgICAgICBBU1NFUlQobV9qaXQpOworICAgICAg
ICBBU1NFUlQodXNlLnVzZUtpbmQoKSA9PSBEb3VibGVVc2UpOwogICAgICAgICBpZiAoaml0LT5p
c0ZpbGxlZChtX2luZGV4KSkKICAgICAgICAgICAgIGZwcigpOwogICAgIH0KQEAgLTI0ODEsNiAr
MjQ5Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2dwck9ySW52YWxpZChJbnZhbGlkR1BSUmVn
KQogICAgIHsKICAgICAgICAgQVNTRVJUKG1faml0KTsKKyAgICAgICAgQVNTRVJUKHVzZS51c2VL
aW5kKCkgIT0gRG91YmxlVXNlKTsKICAgICAgICAgaWYgKGppdC0+aXNGaWxsZWQobV9pbmRleCkp
CiAgICAgICAgICAgICBncHIoKTsKICAgICB9CkBAIC0yNTIyLDYgKzI1MzksNyBAQCBwdWJsaWM6
CiAgICAgICAgICwgbV9ncHJPckludmFsaWQoSW52YWxpZEdQUlJlZykKICAgICB7CiAgICAgICAg
IEFTU0VSVChtX2ppdCk7CisgICAgICAgIEFTU0VSVCh1c2UudXNlS2luZCgpICE9IERvdWJsZVVz
ZSk7CiAgICAgICAgIGlmIChqaXQtPmlzRmlsbGVkKG1faW5kZXgpKQogICAgICAgICAgICAgZ3By
KCk7CiAgICAgfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>