<?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>128047</bug_id>
          
          <creation_ts>2014-02-01 11:34:55 -0800</creation_ts>
          <short_desc>JSC profiler should show reasons for jettison</short_desc>
          <delta_ts>2014-02-01 18:20:58 -0800</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>
          
          <blocked>128053</blocked>
    
    <blocked>128039</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>bunhere</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>mmirman</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>974639</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-01 11:34:55 -0800</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974640</commentid>
    <comment_count>1</comment_count>
      <attachid>222884</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-01 11:43:08 -0800</bug_when>
    <thetext>Created attachment 222884
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974656</commentid>
    <comment_count>2</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-01 14:04:15 -0800</bug_when>
    <thetext>This is what it gives me.  Notice how you can now see, at a glance, all of the reasons why a code block was recompiled.

&gt; log executeIteration
Compilation executeIteration#BBg0Fw-1-Baseline:
Compilation executeIteration#BBg0Fw-2-DFG:
    EXIT: at bc#87 due to InadequateCoverage, 1 times
    EXIT: at bc#123 due to InadequateCoverage, 2 times
    EXIT: at bc#649 due to InadequateCoverage, 1 times
    EXIT: at bc#179 due to BadFunction, 1 times
    Jettisoned due to BaselineLoopReoptimizationTrigger
Compilation executeIteration#BBg0Fw-3-DFG:
    EXIT: at bc#1055 due to InadequateCoverage, 1 times
Compilation executeIteration#BBg0Fw-4-FTLForOSREntry:
Compilation executeIteration#BBg0Fw-5-FTL:
    Jettisoned due to WeakReference
Compilation executeIteration#BBg0Fw-6-DFG:
Compilation executeIteration#BBg0Fw-7-FTL:
    EXIT: at bc#79 --&gt; checkIRQMatching#ENZlEebc#1 due to BadCache, 54 times
    EXIT: at bc#716 --&gt; checkIRQMatching#ENZlEebc#1 due to BadCache, 25 times
    Jettisoned due to WeakReference
Compilation executeIteration#BBg0Fw-8-FTLForOSREntry:
Compilation executeIteration#BBg0Fw-9-DFG:
Compilation executeIteration#BBg0Fw-10-FTLForOSREntry:
Compilation executeIteration#BBg0Fw-11-FTL:
    Jettisoned due to WeakReference</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974658</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-01 14:10:09 -0800</bug_when>
    <thetext>It&apos;s even better when I add counts.  Notice that you can now see some obvious stupidity going on here.  Probably we&apos;re failing to hash-cons some crucial structures.

&gt; log executeIteration
Compilation executeIteration#BBg0Fw-1-Baseline:
    Total count: 37692287  Max count: 444588
Compilation executeIteration#BBg0Fw-2-DFG:
    Total count: 2931054  Max count: 32885
    EXIT: at bc#87 due to InadequateCoverage, 1 times
    EXIT: at bc#123 due to InadequateCoverage, 2 times
    EXIT: at bc#649 due to InadequateCoverage, 1 times
    EXIT: at bc#179 due to BadFunction, 1 times
    Jettisoned due to BaselineLoopReoptimizationTrigger
Compilation executeIteration#BBg0Fw-3-DFG:
    Total count: 14441184  Max count: 169676
    EXIT: at bc#1055 due to InadequateCoverage, 1 times
Compilation executeIteration#BBg0Fw-4-FTLForOSREntry:
    Total count: 0  Max count: 0
Compilation executeIteration#BBg0Fw-5-FTL:
    Total count: 0  Max count: 0
    Jettisoned due to WeakReference
Compilation executeIteration#BBg0Fw-6-DFG:
    Total count: 29596525  Max count: 348302
Compilation executeIteration#BBg0Fw-7-FTL:
    Total count: 71610674  Max count: 843708
    EXIT: at bc#79 --&gt; checkIRQMatching#ENZlEebc#1 due to BadCache, 54 times
    EXIT: at bc#716 --&gt; checkIRQMatching#ENZlEebc#1 due to BadCache, 25 times
    Jettisoned due to WeakReference
Compilation executeIteration#BBg0Fw-8-FTLForOSREntry:
    Total count: 0  Max count: 0
Compilation executeIteration#BBg0Fw-9-DFG:
    Total count: 29435856  Max count: 346420
Compilation executeIteration#BBg0Fw-10-FTLForOSREntry:
    Total count: 375213  Max count: 4408
Compilation executeIteration#BBg0Fw-11-FTL:
    Total count: 323554095  Max count: 3810030
    Jettisoned due to WeakReference</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974660</commentid>
    <comment_count>4</comment_count>
      <attachid>222892</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-01 14:19:26 -0800</bug_when>
    <thetext>Created attachment 222892
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974662</commentid>
    <comment_count>5</comment_count>
      <attachid>222892</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-02-01 14:45:38 -0800</bug_when>
    <thetext>Comment on attachment 222892
the patch

r=me

Not really clear what &quot;Total count&quot; and &quot;Max count&quot; mean.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974677</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-01 18:17:43 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 222892 [details])
&gt; r=me
&gt; 
&gt; Not really clear what &quot;Total count&quot; and &quot;Max count&quot; mean.

Yeah.  display-profiler-output currently uses &quot;max count&quot; for a lot of things.  It means: if you count the number of times each bytecode instruction inside the machine code (i.e. it may include bytecode instructions inlined from other code blocks) has executed, then take the max of that.  The benefit of max count is that it will typically tell you how hot the hottest loop inside the function is.  Gavin never really liked the max and preferred the total, and we sort of agreed - 1.5 years ago? - that we would think this through more deeply and pick a better way of characterizing function hotness.  Someone still needs to figure it out.  So I just filed: https://bugs.webkit.org/show_bug.cgi?id=128053

For now, I&apos;ll just land this as is - more information is better.  But yeah, it&apos;s important that we figure out what to do about this.  I&apos;ve just never seen a profiler get this quite right, so I don&apos;t have context for how to make the right choice, at the moment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974678</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-01 18:19:09 -0800</bug_when>
    <thetext>Looks like the Mac EWS failures are because I used &quot;Project&quot; instead of &quot;Private&quot; for the new header.  Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974679</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-01 18:20:58 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/163254</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222884</attachid>
            <date>2014-02-01 11:43:08 -0800</date>
            <delta_ts>2014-02-01 14:19:26 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>30668</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNjMxMzEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtODEsNiArODEsOCBAQAogCQkwRjE1RjE1RjE0QjdBNzNF
MDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjE1RjE1RDE0QjdBNzNBMDA1REUzN0QgLyogQ29tbW9uU2xv
d1BhdGhzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMEYxNjAxNUQxNTYxOThDOTAwQzI1ODdDIC8qIERGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9u
UGhhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEYxNjAxNUExNTYxOThCRjAwQzI1ODdDIC8qIERGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhh
c2UuY3BwICovOyB9OwogCQkwRjE2MDE1RTE1NjE5OEM5MDBDMjU4N0MgLyogREZHQXJndW1lbnRz
U2ltcGxpZmljYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYxNjAxNUIxNTYxOThCRjAwQzI1ODdDIC8qIERGR0FyZ3VtZW50c1NpbXBs
aWZpY2F0aW9uUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQkwRjE5MENBQzE4OUQ4MkY2MDAwQUU1RjAgLyogUHJvZmlsZXJKZXR0aXNvblJl
YXNvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjE5MENBQTE4OUQ4MkY2MDAwQUU1RjAgLyogUHJvZmlsZXJKZXR0aXNvblJlYXNvbi5jcHAgKi87
IH07CisJCTBGMTkwQ0FEMTg5RDgyRjYwMDBBRTVGMCAvKiBQcm9maWxlckpldHRpc29uUmVhc29u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjE5MENB
QjE4OUQ4MkY2MDAwQUU1RjAgLyogUHJvZmlsZXJKZXR0aXNvblJlYXNvbi5oICovOyB9OwogCQkw
RjFFM0E0NjE1MzRDQkFGMDAwRjk0NTYgLyogREZHQXJndW1lbnRQb3NpdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxRTNBNDMxNTM0Q0JBRDAw
MEY5NDU2IC8qIERGR0FyZ3VtZW50UG9zaXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjFFM0E0NzE1MzRDQkI5MDAwRjk0NTYgLyogREZH
RG91YmxlRm9ybWF0U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMUUzQTQ0MTUzNENCQUQwMDBGOTQ1NiAvKiBERkdEb3VibGVGb3JtYXRTdGF0
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBG
MUUzQTY3MTUzQTIxRTIwMDBGOTQ1NiAvKiBERkdTaWxlbnRSZWdpc3RlclNhdmVQbGFuLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjFFM0E2NTE1M0Ey
MURGMDAwRjk0NTYgLyogREZHU2lsZW50UmVnaXN0ZXJTYXZlUGxhbi5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC05MjIsNyArOTI0LDYgQEAKIAkJ
QTUwM0ZBMTkxODhFMEZCMDAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTMxODhFMEZB
RjAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuY3BwICovOyB9OwogCQlBNTAzRkExQTE4
OEUwRkIwMDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTQxODhFMEZBRjAwMTEwRjE0IC8q
IEphdmFTY3JpcHRDYWxsRnJhbWUuaCAqLzsgfTsKIAkJQTUwM0ZBMUIxODhFMEZCMDAwMTEwRjE0
IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExNTE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2Ny
aXB0Q2FsbEZyYW1lLmNwcCAqLzsgfTsKLQkJQTUwM0ZBMUMxODhFMEZCMDAwMTEwRjE0IC8qIEpT
SmF2YVNjcmlwdENhbGxGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTUwM0ZBMTYxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxG
cmFtZS5oICovOyB9OwogCQlBNTAzRkExRDE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0
Q2FsbEZyYW1lUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE1MDNGQTE3MTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxs
RnJhbWVQcm90b3R5cGUuY3BwICovOyB9OwogCQlBNTAzRkExRTE4OEUwRkIwMDAxMTBGMTQgLyog
SlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExODE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZh
U2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmggKi87IH07CiAJCUE1MDNGQTIxMTg4RUZGNjgwMDEx
MEYxNCAvKiBTY3JpcHRCcmVha3BvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExRjE4OEVGRjY4MDAxMTBGMTQgLyogU2NyaXB0QnJlYWtw
b2ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC0xNDk4LDYgKzE0OTksOCBAQAogCQkwRjE1RjE1RDE0QjdBNzNBMDA1REUzN0QgLyogQ29tbW9u
U2xvd1BhdGhzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbW1vblNsb3dQ
YXRocy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjE2MDE1QTE1NjE5OEJGMDBD
MjU4N0MgLyogREZHQXJndW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNl
LmNwcDsgcGF0aCA9IGRmZy9ERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYxNjAxNUIxNTYxOThCRjAwQzI1ODdDIC8qIERG
R0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gREZHQXJndW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZS5oOyBwYXRoID0gZGZnL0RG
R0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEYxOTBDQUExODlEODJGNjAwMEFFNUYwIC8qIFByb2ZpbGVySmV0dGlzb25SZWFzb24u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUHJvZmlsZXJKZXR0aXNv
blJlYXNvbi5jcHA7IHBhdGggPSBwcm9maWxlci9Qcm9maWxlckpldHRpc29uUmVhc29uLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYxOTBDQUIxODlEODJGNjAwMEFFNUYwIC8q
IFByb2ZpbGVySmV0dGlzb25SZWFzb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gUHJvZmlsZXJKZXR0aXNvblJlYXNvbi5oOyBwYXRoID0gcHJvZmlsZXIvUHJvZmlsZXJKZXR0
aXNvblJlYXNvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjFFM0E0MzE1MzRD
QkFEMDAwRjk0NTYgLyogREZHQXJndW1lbnRQb3NpdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBERkdBcmd1bWVudFBvc2l0aW9uLmg7IHBhdGggPSBkZmcvREZHQXJndW1l
bnRQb3NpdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjFFM0E0NDE1MzRD
QkFEMDAwRjk0NTYgLyogREZHRG91YmxlRm9ybWF0U3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gREZHRG91YmxlRm9ybWF0U3RhdGUuaDsgcGF0aCA9IGRmZy9ERkdEb3Vi
bGVGb3JtYXRTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjFFM0E1MDE1
MzdDMkNCMDAwRjk0NTYgLyogREZHU2xvd1BhdGhHZW5lcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gREZHU2xvd1BhdGhHZW5lcmF0b3IuaDsgcGF0aCA9IGRmZy9ERkdT
bG93UGF0aEdlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDI5NSw2
ICs0Mjk4LDggQEAKIAkJCQkwRkY3Mjk5QzE2NkFEMzQ3MDAwRjVCQTMgLyogUHJvZmlsZXJEYXRh
YmFzZS5jcHAgKi8sCiAJCQkJMEZGNzI5OUQxNjZBRDM0NzAwMEY1QkEzIC8qIFByb2ZpbGVyRGF0
YWJhc2UuaCAqLywKIAkJCQkwRkY3Mjk5RTE2NkFEMzQ3MDAwRjVCQTMgLyogUHJvZmlsZXJFeGVj
dXRpb25Db3VudGVyLmggKi8sCisJCQkJMEYxOTBDQUExODlEODJGNjAwMEFFNUYwIC8qIFByb2Zp
bGVySmV0dGlzb25SZWFzb24uY3BwICovLAorCQkJCTBGMTkwQ0FCMTg5RDgyRjYwMDBBRTVGMCAv
KiBQcm9maWxlckpldHRpc29uUmVhc29uLmggKi8sCiAJCQkJMEZGNzI5OUYxNjZBRDM0NzAwMEY1
QkEzIC8qIFByb2ZpbGVyT3JpZ2luLmNwcCAqLywKIAkJCQkwRkY3MjlBMDE2NkFEMzQ3MDAwRjVC
QTMgLyogUHJvZmlsZXJPcmlnaW4uaCAqLywKIAkJCQkwRkY3MjlBMTE2NkFEMzQ3MDAwRjVCQTMg
LyogUHJvZmlsZXJPcmlnaW5TdGFjay5jcHAgKi8sCkBAIC00NjA2LDExICs0NjExLDExIEBACiAJ
CQkJODZBREQxNDUwRkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBNUNFRUUxNTE4N0YzQkFEMDBFNTVDOTkgLyogSW5zcGVjdG9yQWdlbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCTY1QzAyODVEMTcxNzk2NjgwMDM1MUUzNSAvKiBBUk12N0RPcGNv
ZGUuaCBpbiBIZWFkZXJzICovLAotIAkJCQkyQTY4Mjk1QjE4NzVGODA1MDBCNkMzRTIgLyogQ29w
eVdyaXRlQmFycmllci5oIGluIEhlYWRlcnMgKi8sCi0gICAgICAgICAgICAgICAgMkE0RUM5MEMx
ODYwRDZDMjAwOTRGNzgyIC8qIFdyaXRlQmFycmllckJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMkE2ODI5NUIxODc1RjgwNTAwQjZDM0UyIC8qIENvcHlXcml0ZUJhcnJpZXIuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTJBNEVDOTBDMTg2MEQ2QzIwMDk0Rjc4MiAvKiBXcml0ZUJhcnJpZXJCdWZm
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFNTkzMkE4MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVu
dHJ5U2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MzI0MzkzMTg1Njk3MDkwMDJFRDY5MiAv
KiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yU3RyaW5ncy5weSBpbiBIZWFkZXJzICovLAotIAkJCQlB
NTMyNDM5MjE4NTY5NzA5MDAyRUQ2OTIgLyogQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weSBpbiBI
ZWFkZXJzICovLAorCQkJCUE1MzI0MzkyMTg1Njk3MDkwMDJFRDY5MiAvKiBDb2RlR2VuZXJhdG9y
SW5zcGVjdG9yLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNEU1NEYxN0VFMjc0OTAwQUJCMjE3
IC8qIFRlbXBSZWdpc3RlclNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUwRTRCNjQxODgwOURE
NTAwNjhBNDZEIC8qIEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlGRUI1OEMxNTE4N0I4QjE2MDA5OEVGMEIgLyogRXJyb3JIYW5kbGluZ1Njb3BlLmggaW4g
SGVhZGVycyAqLywKQEAgLTQ2MjIsNyArNDYyNyw3IEBACiAJCQkJMEY4MzM1QjgxNjM5QzFFQTAw
MTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1
ODQwRTI5MTg3Q0E1RTYwMDg0M0IxMCAvKiBpbmxpbmUtYW5kLW1pbmlmeS1zdHlsZXNoZWV0cy1h
bmQtc2NyaXB0cy5weSBpbiBIZWFkZXJzICovLAogCQkJCUE1ODQwRTJCMTg3Q0E3NUIwMDg0M0Ix
MCAvKiBqc21pbi5weSBpbiBIZWFkZXJzICovLAotIAkJCQlBNTMyNDM5ODE4NTZBNDg5MDAyRUQ2
OTIgLyogSW5zcGVjdG9ySlMuanNvbiBpbiBIZWFkZXJzICovLAorCQkJCUE1MzI0Mzk4MTg1NkE0
ODkwMDJFRDY5MiAvKiBJbnNwZWN0b3JKUy5qc29uIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NDBF
MkExODdDQTc1OTAwODQzQjEwIC8qIHh4ZC5wbCBpbiBIZWFkZXJzICovLAogCQkJCUZFQTA4NjIw
MTgyQjdBMDQwMEY2RDg1MSAvKiBCcmVha3BvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4
QUYzNTE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlCdWZmZXIuaCBpbiBIZWFkZXJzICovLApAQCAt
NDczMyw3ICs0NzM4LDcgQEAKIAkJCQlBMUEwMDlDMDE4MzFBMjJEMDBDRjg3MTEgLyogTWFjcm9B
c3NlbWJsZXJBUk02NC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZFQzlEQzUxMzI4REY4MjAwMkIy
QUQ3IC8qIERGR0J5dGVDb2RlUGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ4NTMyODE4
N0RGREVDMDA4M0I2ODcgLyogRlRMQXZhaWxhYmxlUmVjb3ZlcnkuaCBpbiBIZWFkZXJzICovLAot
ICAgICAgICAgICAgICAgIEE1OTNDRjg3MTg0MDM4Q0EwMEJGQ0UyNyAvKiBJbnNwZWN0b3JBZ2Vu
dFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTkzQ0Y4NzE4NDAzOENBMDBCRkNFMjcg
LyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNTZDMzYx
NjI3QjBBRDAwN0YyNzgzIC8qIERGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9y
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjdCMjk0QjE0QzNDRDJGMDA3QzNEQjEgLyogREZHQ2Fw
YWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZGQzk1ODE0RUY5MEEyMDBDNzI1MzIg
LyogREZHQ0ZBUGhhc2UuaCBpbiBIZWFkZXJzICovLApAQCAtNTE0Miw2ICs1MTQ3LDcgQEAKIAkJ
CQlBNzAwODczRTE3Q0JFOEQzMDBDM0U2NDMgLyogTWFwUHJvdG90eXBlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlDMkI5MTZDMjE0REEwMTRFMDBDQkFDODYgLyogTWFya2VkQWxsb2NhdG9yLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNTEwMDdDMTE4N0NDM0M2MDBCMzg4NzkgLyogSlNHbG9iYWxPYmpl
Y3RJbnNwZWN0b3JDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjE5MENBRDE4OUQ4
MkY2MDAwQUU1RjAgLyogUHJvZmlsZXJKZXR0aXNvblJlYXNvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMTQyRDZGMDkxMzUzOUEyODAwQjAyRTg2IC8qIE1hcmtlZEJsb2NrLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxNDE0NDhDQjEzQTE3NkVDMDBGNUJBMUEgLyogTWFya2VkQmxvY2tTZXQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTE0RDJGM0RCMTM5RjRCRTIwMDQ5MTAzMSAvKiBNYXJrZWRTcGFjZS5o
IGluIEhlYWRlcnMgKi8sCkBAIC01OTc2LDcgKzU5ODIsNyBAQAogCQkJCTBGNkIxQ0M1MTg2MkM0
NzgwMDg0NUQ5NyAvKiBGVExVbndpbmRJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOUQz
MzlBMTgwM0FEQjcwMDczQzJCQyAvKiBGVExTdGFja01hcHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEZFQTBBMTYxNzA2QkI5MDAwQkI3MjJDIC8qIEZUTFN0YXRlLmNwcCBpbiBTb3VyY2VzICov
LAotIAkJCQk3QzAwOENEMjE4NkY4QTkzMDA5NTVDMjQgLyogSlNQcm9taXNlRnVuY3Rpb25zLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTdDMDA4Q0QyMTg2RjhBOTMwMDk1NUMyNCAvKiBKU1Byb21p
c2VGdW5jdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2QjFDQjUxODVGQzlFOTAwODQ1
RDk3IC8qIEZUTEpTQ2FsbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjIzNUJFMTE3MTc4RTFD
MDA2OTBDN0YgLyogRlRMVGh1bmtzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1OTNDRjdDMTg0
MDM2MDMwMEJGQ0UyNyAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTYxNTEsNiArNjE1Nyw3IEBACiAJCQkJMTQ0NjlERTMxMDdFQzdFNzAwNjUwNDQ2
IC8qIE51bWJlck9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDQ2OURFNDEwN0VDN0U3
MDA2NTA0NDYgLyogTnVtYmVyUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RjNF
RUJFMTY4Q0RFOTMwMDc3QjkyQSAvKiBPYmpDQ2FsbGJhY2tGdW5jdGlvbi5tbSBpbiBTb3VyY2Vz
ICovLAorCQkJCTBGMTkwQ0FDMTg5RDgyRjYwMDBBRTVGMCAvKiBQcm9maWxlckpldHRpc29uUmVh
c29uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0NDY5REU1MTA3RUM3RTcwMDY1MDQ0NiAvKiBP
YmplY3RDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDQ2OURFNjEwN0VDN0U3
MDA2NTA0NDYgLyogT2JqZWN0UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxMjRB
OEY4MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0cmluZy5jcHAgaW4gU291cmNlcyAqLywK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShy
ZXZpc2lvbiAxNjMxMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI4MCw3ICsyMjgwLDcgQEAgdm9pZCBDb2RlQmxv
Y2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KAogICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgICAgIAotICAgICAgICBqZXR0aXNvbigpOworICAgICAgICBqZXR0aXNvbihQcm9maWxlcjo6
SmV0dGlzb25EdWVUb1dlYWtSZWZlcmVuY2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2Vu
ZGlmIC8vIEVOQUJMRShERkdfSklUKQpAQCAtMjc1OSwxOSArMjc1OSwyMyBAQCBERkc6OkNhcGFi
aWxpdHlMZXZlbCBGdW5jdGlvbkNvZGVCbG9jazo6CiB9CiAjZW5kaWYKIAotdm9pZCBDb2RlQmxv
Y2s6OmpldHRpc29uKFJlb3B0aW1pemF0aW9uTW9kZSBtb2RlKQordm9pZCBDb2RlQmxvY2s6Ompl
dHRpc29uKFByb2ZpbGVyOjpKZXR0aXNvblJlYXNvbiByZWFzb24sIFJlb3B0aW1pemF0aW9uTW9k
ZSBtb2RlKQogeworICAgIFJFTEVBU0VfQVNTRVJUKHJlYXNvbiAhPSBQcm9maWxlcjo6Tm90SmV0
dGlzb25lZCk7CisgICAgCiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgaWYgKERGRzo6c2hvdWxk
U2hvd0Rpc2Fzc2VtYmx5KCkpIHsKICAgICAgICAgZGF0YUxvZygiSmV0dGlzb25pbmcgIiwgKnRo
aXMpOwogICAgICAgICBpZiAobW9kZSA9PSBDb3VudFJlb3B0aW1pemF0aW9uKQogICAgICAgICAg
ICAgZGF0YUxvZygiIGFuZCBjb3VudGluZyByZW9wdGltaXphdGlvbiIpOwotICAgICAgICBkYXRh
TG9nKCIuXG4iKTsKKyAgICAgICAgZGF0YUxvZygiIGR1ZSB0byAiLCByZWFzb24sICIuXG4iKTsK
ICAgICB9CiAgICAgCiAgICAgRGVmZXJHQ0ZvckFXaGlsZSBkZWZlckdDKCptX2hlYXApOwogICAg
IFJFTEVBU0VfQVNTRVJUKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChqaXRUeXBlKCkpKTsKICAg
ICAKKyAgICBqaXRDb2RlKCktPmRmZ0NvbW1vbigpLT5jb21waWxhdGlvbi0+c2V0SmV0dGlzb25S
ZWFzb24ocmVhc29uKTsKKyAgICAKICAgICAvLyBXZSB3YW50IHRvIGFjY29tcGxpc2ggdHdvIHRo
aW5ncyBoZXJlOgogICAgIC8vIDEpIE1ha2Ugc3VyZSB0aGF0IGlmIHRoaXMgQ29kZUJsb2NrIGlz
IG9uIHRoZSBzdGFjayByaWdodCBub3csIHRoZW4gaWYgd2UgcmV0dXJuIHRvIGl0CiAgICAgLy8g
ICAgd2Ugc2hvdWxkIE9TUiBleGl0IGF0IHRoZSB0b3Agb2YgdGhlIG5leHQgYnl0ZWNvZGUgaW5z
dHJ1Y3Rpb24gYWZ0ZXIgdGhlIHJldHVybi4KQEAgLTM1NTIsMTQgKzM1NTYsMTQgQEAgdm9pZCBD
b2RlQmxvY2s6OmFkZEJyZWFrcG9pbnQodW5zaWduZWQgbgogICAgIG1fbnVtQnJlYWtwb2ludHMg
Kz0gbnVtQnJlYWtwb2ludHM7CiAgICAgQVNTRVJUKG1fbnVtQnJlYWtwb2ludHMpOwogICAgIGlm
IChqaXRUeXBlKCkgPT0gSklUQ29kZTo6REZHSklUKQotICAgICAgICBqZXR0aXNvbigpOworICAg
ICAgICBqZXR0aXNvbihQcm9maWxlcjo6SmV0dGlzb25EdWVUb0RlYnVnZ2VyQnJlYWtwb2ludCk7
CiB9CiAKIHZvaWQgQ29kZUJsb2NrOjpzZXRTdGVwcGluZ01vZGUoQ29kZUJsb2NrOjpTdGVwcGlu
Z01vZGUgbW9kZSkKIHsKICAgICBtX3N0ZXBwaW5nTW9kZSA9IG1vZGU7CiAgICAgaWYgKG1vZGUg
PT0gU3RlcHBpbmdNb2RlRW5hYmxlZCAmJiBqaXRUeXBlKCkgPT0gSklUQ29kZTo6REZHSklUKQot
ICAgICAgICBqZXR0aXNvbigpOworICAgICAgICBqZXR0aXNvbihQcm9maWxlcjo6SmV0dGlzb25E
dWVUb0RlYnVnZ2VyU3RlcHBpbmcpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9uIDE2MzEz
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjYsNiArNjYsNyBAQAogI2luY2x1ZGUgIkxMSW50Q2FsbExpbmtJbmZvLmgi
CiAjaW5jbHVkZSAiTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuaCIKICNpbmNsdWRlICJQcm9maWxl
ckNvbXBpbGF0aW9uLmgiCisjaW5jbHVkZSAiUHJvZmlsZXJKZXR0aXNvblJlYXNvbi5oIgogI2lu
Y2x1ZGUgIlJlZ0V4cE9iamVjdC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJbmZvLmgiCiAj
aW5jbHVkZSAiVW5jb25kaXRpb25hbEZpbmFsaXplci5oIgpAQCAtMjk2LDcgKzI5Nyw3IEBAIHB1
YmxpYzoKICAgICBib29sIGhhc09wdGltaXplZFJlcGxhY2VtZW50KCk7IC8vIHRoZSB0eXBlVG9S
ZXBsYWNlIGlzIG15IEpJVFR5cGUKICNlbmRpZgogCi0gICAgdm9pZCBqZXR0aXNvbihSZW9wdGlt
aXphdGlvbk1vZGUgPSBEb250Q291bnRSZW9wdGltaXphdGlvbik7CisgICAgdm9pZCBqZXR0aXNv
bihQcm9maWxlcjo6SmV0dGlzb25SZWFzb24sIFJlb3B0aW1pemF0aW9uTW9kZSA9IERvbnRDb3Vu
dFJlb3B0aW1pemF0aW9uKTsKICAgICAKICAgICBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1
dGFibGUoKSBjb25zdCB7IHJldHVybiBtX293bmVyRXhlY3V0YWJsZS5nZXQoKTsgfQogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRj
aHBvaW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcAkocmV2aXNpb24gMTYzMTMxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hw
b2ludC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM2LDcgKzM2LDcgQEAgdm9pZCBDb2RlQmxvY2tKZXR0
aXNvbmluZ1dhdGNocG9pbnQ6OmZpcgogICAgIGlmIChERkc6OnNob3VsZFNob3dEaXNhc3NlbWJs
eSgpKQogICAgICAgICBkYXRhTG9nKCJGaXJpbmcgd2F0Y2hwb2ludCAiLCBSYXdQb2ludGVyKHRo
aXMpLCAiIG9uICIsICptX2NvZGVCbG9jaywgIlxuIik7CiAKLSAgICBtX2NvZGVCbG9jay0+amV0
dGlzb24oQ291bnRSZW9wdGltaXphdGlvbik7CisgICAgbV9jb2RlQmxvY2stPmpldHRpc29uKFBy
b2ZpbGVyOjpKZXR0aXNvbkR1ZVRvVW5wcm9maWxlZFdhdGNocG9pbnQsIENvdW50UmVvcHRpbWl6
YXRpb24pOwogCiAgICAgaWYgKGlzT25MaXN0KCkpCiAgICAgICAgIHJlbW92ZSgpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb2ZpbGVkQ29kZUJsb2NrSmV0dGlzb25p
bmdXYXRjaHBvaW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuY3BwCShyZXZpc2lv
biAxNjMxMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvZmlsZWRDb2Rl
QmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1
Niw3IEBAIHZvaWQgUHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG8KICAgICAgICAg
ICAgICAgICBleGl0aW5nSklUVHlwZUZvcihtX2NvZGVCbG9jay0+aml0VHlwZSgpKSkpOwogICAg
IH0KICAgICAKLSAgICBtX2NvZGVCbG9jay0+amV0dGlzb24oQ291bnRSZW9wdGltaXphdGlvbik7
CisgICAgbV9jb2RlQmxvY2stPmpldHRpc29uKFByb2ZpbGVyOjpKZXR0aXNvbkR1ZVRvUHJvZmls
ZWRXYXRjaHBvaW50LCBDb3VudFJlb3B0aW1pemF0aW9uKTsKICAgICAKICAgICBpZiAoaXNPbkxp
c3QoKSkKICAgICAgICAgcmVtb3ZlKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDE2MzEzMSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMywgMjAxNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTExMDcsNyArMTEwNyw3IEBAIGV4dGVybiAiQyIgdm9pZCBKSVRfT1BFUkFUSU9OIHRyaWdnZXJS
ZW8KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG9wdGltaXplZENvZGVCbG9jay0+amV0
dGlzb24oQ291bnRSZW9wdGltaXphdGlvbik7CisgICAgb3B0aW1pemVkQ29kZUJsb2NrLT5qZXR0
aXNvbihQcm9maWxlcjo6SmV0dGlzb25EdWVUb09TUkV4aXQsIENvdW50UmVvcHRpbWl6YXRpb24p
OwogfQogCiAjaWYgRU5BQkxFKEZUTF9KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAJKHJl
dmlzaW9uIDE2MzEzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGllclVwQ2hl
Y2tJbmplY3Rpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk4LDcgKzk4LDYgQEAgcHVi
bGljOgogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYmxvY2stPmJ5dGVj
b2RlQmVnaW4gPT0gY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KTsKICAgICAgICAgICAgICAgICBp
bnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKICAgICAgICAgICAgICAgICAgICAgbm9kZUluZGV4ICsg
MSwgU3BlY05vbmUsIENoZWNrVGllclVwQW5kT1NSRW50ZXIsIGNvZGVPcmlnaW4pOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxNjMxMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQ4LDcgKzExNDgsNyBA
QCBTbG93UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpCiAgICAgICAgICAgICAg
ICAgICAgICJUcmlnZ2VyaW5nIHJlb3B0aW1pemF0aW9uIG9mICIsICpjb2RlQmxvY2ssCiAgICAg
ICAgICAgICAgICAgICAgICIoIiwgKmNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKSwgIikgKGluIGxv
b3ApLlxuIik7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBjb2RlQmxvY2stPnJlcGxhY2Vt
ZW50KCktPmpldHRpc29uKENvdW50UmVvcHRpbWl6YXRpb24pOworICAgICAgICAgICAgY29kZUJs
b2NrLT5yZXBsYWNlbWVudCgpLT5qZXR0aXNvbihQcm9maWxlcjo6SmV0dGlzb25EdWVUb0Jhc2Vs
aW5lTG9vcFJlb3B0aW1pemF0aW9uVHJpZ2dlciwgQ291bnRSZW9wdGltaXphdGlvbik7CiAgICAg
ICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KDAsIDApOwogICAgICAgICB9CiAgICAgfSBlbHNl
IHsKQEAgLTEyMzMsNyArMTIzMyw3IEBAIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGkKICAgICAgICAgICAgICAgICAiVHJpZ2dlcmluZyByZW9wdGltaXphdGlvbiBvZiAi
LCAqY29kZUJsb2NrLCAiIC0+ICIsCiAgICAgICAgICAgICAgICAgKmNvZGVCbG9jay0+cmVwbGFj
ZW1lbnQoKSwgIiAoYWZ0ZXIgT1NSIGZhaWwpLlxuIik7CiAgICAgICAgIH0KLSAgICAgICAgb3B0
aW1pemVkQ29kZUJsb2NrLT5qZXR0aXNvbihDb3VudFJlb3B0aW1pemF0aW9uKTsKKyAgICAgICAg
b3B0aW1pemVkQ29kZUJsb2NrLT5qZXR0aXNvbihQcm9maWxlcjo6SmV0dGlzb25EdWVUb0Jhc2Vs
aW5lTG9vcFJlb3B0aW1pemF0aW9uVHJpZ2dlck9uT1NSRW50cnlGYWlsLCBDb3VudFJlb3B0aW1p
emF0aW9uKTsKICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCgwLCAwKTsKICAgICB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckNvbXBpbGF0aW9uLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJD
b21waWxhdGlvbi5jcHAJKHJldmlzaW9uIDE2MzEzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wcm9maWxlci9Qcm9maWxlckNvbXBpbGF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMx
LDYgKzEzMSw3IEBAIEpTVmFsdWUgQ29tcGlsYXRpb246OnRvSlMoRXhlY1N0YXRlKiBleGUKICAg
ICByZXN1bHQtPnB1dERpcmVjdChleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubnVt
SW5saW5lZEdldEJ5SWRzLCBqc051bWJlcihtX251bUlubGluZWRHZXRCeUlkcykpOwogICAgIHJl
c3VsdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5udW1Jbmxp
bmVkUHV0QnlJZHMsIGpzTnVtYmVyKG1fbnVtSW5saW5lZFB1dEJ5SWRzKSk7CiAgICAgcmVzdWx0
LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLm51bUlubGluZWRD
YWxscywganNOdW1iZXIobV9udW1JbmxpbmVkQ2FsbHMpKTsKKyAgICByZXN1bHQtPnB1dERpcmVj
dChleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuamV0dGlzb25SZWFzb24sIGpzU3Ry
aW5nKGV4ZWMsIFN0cmluZzo6ZnJvbVVURjgodG9DU3RyaW5nKG1famV0dGlzb25SZWFzb24pKSkp
OwogICAgIAogICAgIHJldHVybiByZXN1bHQ7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckNvbXBpbGF0aW9uLmgJKHJldmlzaW9uIDE2
MzEzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckNvbXBpbGF0
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJQcm9maWxl
ckNvbXBpbGF0aW9uS2luZC5oIgogI2luY2x1ZGUgIlByb2ZpbGVyQ29tcGlsZWRCeXRlY29kZS5o
IgogI2luY2x1ZGUgIlByb2ZpbGVyRXhlY3V0aW9uQ291bnRlci5oIgorI2luY2x1ZGUgIlByb2Zp
bGVySmV0dGlzb25SZWFzb24uaCIKICNpbmNsdWRlICJQcm9maWxlck9TUkV4aXQuaCIKICNpbmNs
dWRlICJQcm9maWxlck9TUkV4aXRTaXRlLmgiCiAjaW5jbHVkZSAiUHJvZmlsZXJPcmlnaW5TdGFj
ay5oIgpAQCAtNjgsMTEgKzY5LDE3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZE9TUkV4aXRTaXRl
KGNvbnN0IFZlY3Rvcjxjb25zdCB2b2lkKj4mIGNvZGVBZGRyZXNzZXMpOwogICAgIE9TUkV4aXQq
IGFkZE9TUkV4aXQodW5zaWduZWQgaWQsIGNvbnN0IE9yaWdpblN0YWNrJiwgRXhpdEtpbmQsIGJv
b2wgaXNXYXRjaHBvaW50KTsKICAgICAKKyAgICB2b2lkIHNldEpldHRpc29uUmVhc29uKEpldHRp
c29uUmVhc29uIGpldHRpc29uUmVhc29uKQorICAgIHsKKyAgICAgICAgbV9qZXR0aXNvblJlYXNv
biA9IGpldHRpc29uUmVhc29uOworICAgIH0KKyAgICAKICAgICBKU1ZhbHVlIHRvSlMoRXhlY1N0
YXRlKikgY29uc3Q7CiAgICAgCiBwcml2YXRlOgogICAgIEJ5dGVjb2RlcyogbV9ieXRlY29kZXM7
CiAgICAgQ29tcGlsYXRpb25LaW5kIG1fa2luZDsKKyAgICBKZXR0aXNvblJlYXNvbiBtX2pldHRp
c29uUmVhc29uOwogICAgIFZlY3RvcjxQcm9maWxlZEJ5dGVjb2Rlcz4gbV9wcm9maWxlZEJ5dGVj
b2RlczsKICAgICBWZWN0b3I8Q29tcGlsZWRCeXRlY29kZT4gbV9kZXNjcmlwdGlvbnM7CiAgICAg
SGFzaE1hcDxPcmlnaW5TdGFjaywgc3RkOjp1bmlxdWVfcHRyPEV4ZWN1dGlvbkNvdW50ZXI+PiBt
X2NvdW50ZXJzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVy
SmV0dGlzb25SZWFzb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
cm9maWxlci9Qcm9maWxlckpldHRpc29uUmVhc29uLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckpldHRpc29uUmVhc29uLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQcm9maWxl
ckpldHRpc29uUmVhc29uLmgiCisKKyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKworbmFt
ZXNwYWNlIFdURiB7CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M6OlByb2ZpbGVyOworCit2b2lkIHBy
aW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSmV0dGlzb25SZWFzb24gcmVhc29uKQorewor
ICAgIHN3aXRjaCAocmVhc29uKSB7CisgICAgY2FzZSBOb3RKZXR0aXNvbmVkOgorICAgICAgICBv
dXQucHJpbnQoIk5vdEpldHRpc29uZWQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgSmV0
dGlzb25EdWVUb1dlYWtSZWZlcmVuY2U6CisgICAgICAgIG91dC5wcmludCgiV2Vha1JlZmVyZW5j
ZSIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBKZXR0aXNvbkR1ZVRvRGVidWdnZXJCcmVh
a3BvaW50OgorICAgICAgICBvdXQucHJpbnQoIkRlYnVnZ2VyQnJlYWtwb2ludCIpOworICAgICAg
ICByZXR1cm47CisgICAgY2FzZSBKZXR0aXNvbkR1ZVRvRGVidWdnZXJTdGVwcGluZzoKKyAgICAg
ICAgb3V0LnByaW50KCJEZWJ1Z2dlclN0ZXBwaW5nIik7CisgICAgICAgIHJldHVybjsKKyAgICBj
YXNlIEpldHRpc29uRHVlVG9MZWdhY3lQcm9maWxlcjoKKyAgICAgICAgb3V0LnByaW50KCJMZWdh
Y3lQcm9maWxlciIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBKZXR0aXNvbkR1ZVRvQmFz
ZWxpbmVMb29wUmVvcHRpbWl6YXRpb25UcmlnZ2VyOgorICAgICAgICBvdXQucHJpbnQoIkJhc2Vs
aW5lTG9vcFJlb3B0aW1pemF0aW9uVHJpZ2dlciIpOworICAgICAgICByZXR1cm47CisgICAgY2Fz
ZSBKZXR0aXNvbkR1ZVRvQmFzZWxpbmVMb29wUmVvcHRpbWl6YXRpb25UcmlnZ2VyT25PU1JFbnRy
eUZhaWw6CisgICAgICAgIG91dC5wcmludCgiQmFzZWxpbmVMb29wUmVvcHRpbWl6YXRpb25Ucmln
Z2VyT25PU1JFbnRyeUZhaWwiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgSmV0dGlzb25E
dWVUb09TUkV4aXQ6CisgICAgICAgIG91dC5wcmludCgiT1NSRXhpdCIpOworICAgICAgICByZXR1
cm47CisgICAgY2FzZSBKZXR0aXNvbkR1ZVRvUHJvZmlsZWRXYXRjaHBvaW50OgorICAgICAgICBv
dXQucHJpbnQoIlByb2ZpbGVkV2F0Y2hwb2ludCIpOworICAgICAgICByZXR1cm47CisgICAgY2Fz
ZSBKZXR0aXNvbkR1ZVRvVW5wcm9maWxlZFdhdGNocG9pbnQ6CisgICAgICAgIG91dC5wcmludCgi
VW5wcm9maWxlZFdhdGNocG9pbnQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVySmV0dGlzb25SZWFzb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJK
ZXR0aXNvblJlYXNvbi5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3By
b2ZpbGVyL1Byb2ZpbGVySmV0dGlzb25SZWFzb24uaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
Zm5kZWYgUHJvZmlsZXJKZXR0aXNvblJlYXNvbl9oCisjZGVmaW5lIFByb2ZpbGVySmV0dGlzb25S
ZWFzb25faAorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFByb2ZpbGVyIHsKKworZW51bSBK
ZXR0aXNvblJlYXNvbiB7CisgICAgTm90SmV0dGlzb25lZCwKKyAgICBKZXR0aXNvbkR1ZVRvV2Vh
a1JlZmVyZW5jZSwKKyAgICBKZXR0aXNvbkR1ZVRvRGVidWdnZXJCcmVha3BvaW50LAorICAgIEpl
dHRpc29uRHVlVG9EZWJ1Z2dlclN0ZXBwaW5nLAorICAgIEpldHRpc29uRHVlVG9MZWdhY3lQcm9m
aWxlciwKKyAgICBKZXR0aXNvbkR1ZVRvQmFzZWxpbmVMb29wUmVvcHRpbWl6YXRpb25UcmlnZ2Vy
LAorICAgIEpldHRpc29uRHVlVG9CYXNlbGluZUxvb3BSZW9wdGltaXphdGlvblRyaWdnZXJPbk9T
UkVudHJ5RmFpbCwKKyAgICBKZXR0aXNvbkR1ZVRvT1NSRXhpdCwKKyAgICBKZXR0aXNvbkR1ZVRv
UHJvZmlsZWRXYXRjaHBvaW50LAorICAgIEpldHRpc29uRHVlVG9VbnByb2ZpbGVkV2F0Y2hwb2lu
dAorfTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OlByb2ZpbGVyCisKK25hbWVzcGFjZSBXVEYg
eworCitjbGFzcyBQcmludFN0cmVhbTsKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYs
IEpTQzo6UHJvZmlsZXI6OkpldHRpc29uUmVhc29uKTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisK
KyNlbmRpZiAvLyBQcm9maWxlckpldHRpc29uUmVhc29uX2gKKwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCShyZXZpc2lvbiAx
NjMxMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVy
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsNiArMTE0LDcgQEAKICAgICBtYWNybyhpc1Byb3Rv
dHlwZU9mKSBcCiAgICAgbWFjcm8oaXNWaWV3KSBcCiAgICAgbWFjcm8oaXNXYXRjaHBvaW50KSBc
CisgICAgbWFjcm8oamV0dGlzb25SZWFzb24pIFwKICAgICBtYWNybyhqb2luKSBcCiAgICAgbWFj
cm8oa2V5cykgXAogICAgIG1hY3JvKGxhc3RJbmRleCkgXApJbmRleDogVG9vbHMvU2NyaXB0cy9k
aXNwbGF5LXByb2ZpbGVyLW91dHB1dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2Rpc3Bs
YXktcHJvZmlsZXItb3V0cHV0CShyZXZpc2lvbiAxNjMxMzEpCisrKyBUb29scy9TY3JpcHRzL2Rp
c3BsYXktcHJvZmlsZXItb3V0cHV0CSh3b3JraW5nIGNvcHkpCkBAIC00MTcsNyArNDE3LDE4IEBA
IGNsYXNzIERlc2NyaXB0aW9uTGluZQogICAgICAgICBlbmQKICAgICBlbmQKIGVuZAotICAgICAg
ICAgICAgCisKK2RlZiBvcmlnaW5Ub1ByaW50U3RhY2sob3JpZ2luKQorICAgICgwLi4uKG9yaWdp
bi5zaXplIC0gMSkpLm1hcCB7CisgICAgICAgIHwgaW5kZXggfAorICAgICAgICAiYmNcIyN7b3Jp
Z2luW2luZGV4XS5ieXRlY29kZUluZGV4fSAtLT4gI3tvcmlnaW5baW5kZXggKyAxXS5ieXRlY29k
ZXN9IgorICAgIH0KK2VuZAorCitkZWYgb3JpZ2luVG9TdHJpbmcob3JpZ2luKQorICAgIG9yaWdp
blRvUHJpbnRTdGFjayhvcmlnaW4pLmpvaW4oIiAiKSArICJiY1wjI3tvcmlnaW5bLTFdLmJ5dGVj
b2RlSW5kZXh9IgorZW5kCisKIGlmIEFSR1YubGVuZ3RoICE9IDEKICAgICAkc3RkZXJyLnB1dHMg
IlVzYWdlOiBkaXNwbGF5LXByb2ZpbGVyLW91dHB1dCA8cGF0aCB0byBwcm9maWxlciBvdXRwdXQg
ZmlsZT4iCiAgICAgJHN0ZGVyci5wdXRzCkBAIC02MjQsNiArNjM1LDY5IEBAIGRlZiBzdW1tYXJ5
KG1vZGUpCiAgICAgfQogZW5kCiAKK2RlZiBxdWVyeUNvbXBpbGF0aW9ucyhjb21tYW5kLCBhcmdz
KQorICAgIGNvbXBpbGF0aW9uSW5kZXggPSBuaWwKKyAgICAKKyAgICBjYXNlIGFyZ3MubGVuZ3Ro
CisgICAgd2hlbiAxCisgICAgICAgIGhhc2ggPSBhcmdzWzBdCisgICAgICAgIGVuZ2luZSA9IG5p
bAorICAgIHdoZW4gMgorICAgICAgICBpZiBtYXlCZUhhc2goYXJnc1swXSkKKyAgICAgICAgICAg
IGhhc2ggPSBhcmdzWzBdCisgICAgICAgICAgICBlbmdpbmUgPSBhcmdzWzFdCisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGVuZ2luZSA9IGFyZ3NbMF0KKyAgICAgICAgICAgIGhhc2ggPSBhcmdz
WzFdCisgICAgICAgIGVuZAorICAgIGVsc2UKKyAgICAgICAgcHV0cyAiVXNhZ2U6ICN7Y29tbWFu
ZH0gPGNvZGUgYmxvY2sgaGFzaD4gPGVuZ2luZT4iCisgICAgICAgIHJldHVybgorICAgIGVuZAor
ICAgIAorICAgIGlmIGhhc2ggYW5kIGhhc2ggPX4gLy0oLT9bMC05XSspLS8KKyAgICAgICAgaGFz
aCA9ICR+LnByZV9tYXRjaAorICAgICAgICBlbmdpbmUgPSAkfi5wb3N0X21hdGNoCisgICAgICAg
IGNvbXBpbGF0aW9uSW5kZXggPSAkMS50b19pCisgICAgZW5kCisgICAgCisgICAgaWYgZW5naW5l
IGFuZCBub3QgJGVuZ2luZXMuaW5kZXgoZW5naW5lKQorICAgICAgICBwYXR0ZXJuID0gUmVnZXhw
Lm5ldyhSZWdleHAuZXNjYXBlKGVuZ2luZSksICJpIikKKyAgICAgICAgdHJ1ZUVuZ2luZSA9IG5p
bAorICAgICAgICAkZW5naW5lcy5lYWNoIHsKKyAgICAgICAgICAgIHwgbXlFbmdpbmUgfAorICAg
ICAgICAgICAgaWYgbXlFbmdpbmUgPX4gcGF0dGVybgorICAgICAgICAgICAgICAgIHRydWVFbmdp
bmUgPSBteUVuZ2luZQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbmQKKyAg
ICAgICAgfQorICAgICAgICB1bmxlc3MgdHJ1ZUVuZ2luZQorICAgICAgICAgICAgcHV0cyAiI3tl
bmdpbmV9IGlzIG5vdCBhIHZhbGlkIGVuZ2luZSwgdHJ5ICN7JGVuZ2luZXMuam9pbignIG9yICcp
fS4iCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZW5kCisgICAgICAgIGVuZ2luZSA9IHRy
dWVFbmdpbmUKKyAgICBlbmQKKyAgICAKKyAgICBpZiBoYXNoID09ICIqIgorICAgICAgICBoYXNo
ID0gbmlsCisgICAgZW5kCisgICAgCisgICAgc29ydEJ5TW9kZSgkY29tcGlsYXRpb25zKS5lYWNo
IHsKKyAgICAgICAgfCBjb21waWxhdGlvbiB8CisgICAgICAgIG5leHQgaWYgaGFzaCBhbmQgbm90
IGNvbXBpbGF0aW9uLmJ5dGVjb2RlLm1hdGNoZXMoaGFzaCkKKyAgICAgICAgbmV4dCBpZiBlbmdp
bmUgYW5kIGNvbXBpbGF0aW9uLmVuZ2luZSAhPSBlbmdpbmUKKyAgICAgICAgaWYgY29tcGlsYXRp
b25JbmRleAorICAgICAgICAgICAgaWYgY29tcGlsYXRpb25JbmRleCA8IDAKKyAgICAgICAgICAg
ICAgICBuZXh0IHVubGVzcyBjb21waWxhdGlvbi5ieXRlY29kZS5jb21waWxhdGlvbnNbY29tcGls
YXRpb25JbmRleF0gPT0gY29tcGlsYXRpb24KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICBuZXh0IHVubGVzcyBjb21waWxhdGlvbi5jb21waWxhdGlvbkluZGV4ID09IGNvbXBpbGF0
aW9uSW5kZXgKKyAgICAgICAgICAgIGVuZAorICAgICAgICBlbmQKKyAgICAgICAgCisgICAgICAg
IHlpZWxkIGNvbXBpbGF0aW9uCisgICAgfQorZW5kCisKIGRlZiBleGVjdXRlQ29tbWFuZCgqY29t
bWFuZEFycmF5KQogICAgIGNvbW1hbmQgPSBjb21tYW5kQXJyYXlbMF0KICAgICBhcmdzID0gY29t
bWFuZEFycmF5WzEuLi0xXQpAQCAtNjM0LDYgKzcwOCw3IEBAIGRlZiBleGVjdXRlQ29tbWFuZCgq
Y29tbWFuZEFycmF5KQogICAgICAgICBwdXRzICJzb3VyY2UgICAgICAgICAgU2hvdyB0aGUgc291
cmNlIGZvciBhIGNvZGUgYmxvY2suIgogICAgICAgICBwdXRzICJieXRlY29kZSAoYikgICAgU2hv
dyB0aGUgYnl0ZWNvZGUgZm9yIGEgY29kZSBibG9jaywgd2l0aCBjb3VudHMuIgogICAgICAgICBw
dXRzICJwcm9maWxpbmcgKHApICAgU2hvdyB0aGUgKGludGVybmFsKSBwcm9maWxpbmcgZGF0YSBm
b3IgYSBjb2RlIGJsb2NrLiIKKyAgICAgICAgcHV0cyAiY29tcGlsYXRpb25zICAgIExpc3QgdGhl
IGNvbXBpbGF0aW9ucyBpbnZvbHZpbmcgdGhpcyBjb2RlIGJsb2NrLiIKICAgICAgICAgcHV0cyAi
ZGlzcGxheSAoZCkgICAgIERpc3BsYXkgZGV0YWlscyBmb3IgYSBjb2RlIGJsb2NrLiIKICAgICAg
ICAgcHV0cyAiaW5saW5lcyAgICAgICAgIFNob3cgYWxsIGlubGluaW5nIHN0YWNrcyB0aGF0IHRo
ZSBjb2RlIGJsb2NrIHdhcyBvbi4iCiAgICAgICAgIHB1dHMgImNvdW50cyAgICAgICAgICBTZXQg
d2hldGhlciB0byBzaG93IGNvdW50cyBmb3IgJ2J5dGVjb2RlJyBhbmQgJ2Rpc3BsYXknLiIKQEAg
LTc1MCw2ICs4MjUsMTggQEAgZGVmIGV4ZWN1dGVDb21tYW5kKCpjb21tYW5kQXJyYXkpCiAgICAg
ICAgICAgICAgICAgZW5kCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICB3aGVuICJjb21w
aWxhdGlvbnMiCisgICAgICAgIHF1ZXJ5Q29tcGlsYXRpb25zKCJjb21waWxhdGlvbnMiLCBhcmdz
KSB7CisgICAgICAgICAgICB8IGNvbXBpbGF0aW9uIHwKKyAgICAgICAgICAgIHB1dHMgIkNvbXBp
bGF0aW9uICN7Y29tcGlsYXRpb259OiIKKyAgICAgICAgICAgIGNvbXBpbGF0aW9uLm9zckV4aXRz
LnZhbHVlcy5lYWNoIHsKKyAgICAgICAgICAgICAgICB8IGV4aXRzIHwKKyAgICAgICAgICAgICAg
ICBleGl0cy5lYWNoIHsKKyAgICAgICAgICAgICAgICAgICAgfCBleGl0IHwKKyAgICAgICAgICAg
ICAgICAgICAgcHV0cyAiICAgIEVYSVQ6IGF0ICN7b3JpZ2luVG9TdHJpbmcoZXhpdC5vcmlnaW4p
fSBkdWUgdG8gI3tleGl0LmV4aXRLaW5kfSwgI3tleGl0LmNvdW50fSB0aW1lcyIKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB3aGVuICJpbmxpbmVzIgog
ICAgICAgICBpZiBhcmdzLmxlbmd0aCAhPSAxCiAgICAgICAgICAgICBwdXRzICJVc2FnZTogaW5s
aW5lcyA8Y29kZSBibG9jayBoYXNoPiIKQEAgLTc5MywxMyArODgwLDYgQEAgZGVmIGV4ZWN1dGVD
b21tYW5kKCpjb21tYW5kQXJyYXkpCiAgICAgICAgICAgICAgICAgcHJpbnRBcnJheSA9IFtdCiAg
ICAgICAgICAgICAgICAgbGFzdFByaW50U3RhY2sgPSBbXQogICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgIGRlZiBvcmlnaW5Ub1ByaW50U3RhY2sob3JpZ2luKQotICAgICAgICAgICAg
ICAgICAgICAoMC4uLihvcmlnaW4uc2l6ZSAtIDEpKS5tYXAgewotICAgICAgICAgICAgICAgICAg
ICAgICAgfCBpbmRleCB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAiYmNcIyN7b3JpZ2luW2lu
ZGV4XS5ieXRlY29kZUluZGV4fSAtLT4gI3tvcmlnaW5baW5kZXggKyAxXS5ieXRlY29kZXN9Igot
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZW5kCi0gICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgZGVmIHByaW50U3RhY2socHJpbnRBcnJheSwgc3RhY2ssIGxh
c3RTdGFjaykKICAgICAgICAgICAgICAgICAgICAgc3RpbGxDb21tb24gPSB0cnVlCiAgICAgICAg
ICAgICAgICAgICAgIHN0YWNrLmVhY2hfd2l0aF9pbmRleCB7CkBAIC04MjcsNjcgKzkwNywxMyBA
QCBkZWYgZXhlY3V0ZUNvbW1hbmQoKmNvbW1hbmRBcnJheSkKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgIHdoZW4gImRpc3BsYXkiLCAiZCIKLSAgICAgICAgY29tcGlsYXRpb25JbmRleCA9
IG5pbAotICAgICAgICAKLSAgICAgICAgY2FzZSBhcmdzLmxlbmd0aAotICAgICAgICB3aGVuIDEK
LSAgICAgICAgICAgIGhhc2ggPSBhcmdzWzBdCi0gICAgICAgICAgICBlbmdpbmUgPSBuaWwKLSAg
ICAgICAgd2hlbiAyCi0gICAgICAgICAgICBpZiBtYXlCZUhhc2goYXJnc1swXSkKLSAgICAgICAg
ICAgICAgICBoYXNoID0gYXJnc1swXQotICAgICAgICAgICAgICAgIGVuZ2luZSA9IGFyZ3NbMV0K
LSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBlbmdpbmUgPSBhcmdzWzBdCi0gICAg
ICAgICAgICAgICAgaGFzaCA9IGFyZ3NbMV0KLSAgICAgICAgICAgIGVuZAotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBwdXRzICJVc2FnZTogc3VtbWFyeSA8Y29kZSBibG9jayBoYXNoPiA8ZW5n
aW5lPiIKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBlbmQKLSAgICAgICAgCi0gICAgICAg
IGlmIGhhc2ggYW5kIGhhc2ggPX4gLy0oLT9bMC05XSspLS8KLSAgICAgICAgICAgIGhhc2ggPSAk
fi5wcmVfbWF0Y2gKLSAgICAgICAgICAgIGVuZ2luZSA9ICR+LnBvc3RfbWF0Y2gKLSAgICAgICAg
ICAgIGNvbXBpbGF0aW9uSW5kZXggPSAkMS50b19pCi0gICAgICAgIGVuZAotICAgICAgICAKLSAg
ICAgICAgaWYgZW5naW5lIGFuZCBub3QgJGVuZ2luZXMuaW5kZXgoZW5naW5lKQotICAgICAgICAg
ICAgcGF0dGVybiA9IFJlZ2V4cC5uZXcoUmVnZXhwLmVzY2FwZShlbmdpbmUpLCAiaSIpCi0gICAg
ICAgICAgICB0cnVlRW5naW5lID0gbmlsCi0gICAgICAgICAgICAkZW5naW5lcy5lYWNoIHsKLSAg
ICAgICAgICAgICAgICB8IG15RW5naW5lIHwKLSAgICAgICAgICAgICAgICBpZiBteUVuZ2luZSA9
fiBwYXR0ZXJuCi0gICAgICAgICAgICAgICAgICAgIHRydWVFbmdpbmUgPSBteUVuZ2luZQotICAg
ICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGVuZAotICAgICAgICAgICAg
fQotICAgICAgICAgICAgdW5sZXNzIHRydWVFbmdpbmUKLSAgICAgICAgICAgICAgICBwdXRzICIj
e2VuZ2luZX0gaXMgbm90IGEgdmFsaWQgZW5naW5lLCB0cnkgI3skZW5naW5lcy5qb2luKCcgb3Ig
Jyl9LiIKLSAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgIGVuZAotICAgICAgICAg
ICAgZW5naW5lID0gdHJ1ZUVuZ2luZQotICAgICAgICBlbmQKLSAgICAgICAgCi0gICAgICAgIGlm
IGhhc2ggPT0gIioiCi0gICAgICAgICAgICBoYXNoID0gbmlsCi0gICAgICAgIGVuZAotICAgICAg
ICAKICAgICAgICAgYWN0dWFsQ291bnRDb2xzID0gMTMKICAgICAgICAgc291cmNlQ291bnRDb2xz
ID0gMTAgKiAkZW5naW5lcy5zaXplCiAgICAgICAgIAogICAgICAgICBmaXJzdCA9IHRydWUKLSAg
ICAgICAgc29ydEJ5TW9kZSgkY29tcGlsYXRpb25zKS5lYWNoIHsKKworICAgICAgICBxdWVyeUNv
bXBpbGF0aW9ucygiZGlzcGxheSIsIGFyZ3MpIHsKICAgICAgICAgICAgIHwgY29tcGlsYXRpb24g
fAotICAgICAgICAgICAgbmV4dCBpZiBoYXNoIGFuZCBub3QgY29tcGlsYXRpb24uYnl0ZWNvZGUu
bWF0Y2hlcyhoYXNoKQotICAgICAgICAgICAgbmV4dCBpZiBlbmdpbmUgYW5kIGNvbXBpbGF0aW9u
LmVuZ2luZSAhPSBlbmdpbmUKLSAgICAgICAgICAgIGlmIGNvbXBpbGF0aW9uSW5kZXgKLSAgICAg
ICAgICAgICAgICBpZiBjb21waWxhdGlvbkluZGV4IDwgMAotICAgICAgICAgICAgICAgICAgICBu
ZXh0IHVubGVzcyBjb21waWxhdGlvbi5ieXRlY29kZS5jb21waWxhdGlvbnNbY29tcGlsYXRpb25J
bmRleF0gPT0gY29tcGlsYXRpb24KLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgICAgIG5leHQgdW5sZXNzIGNvbXBpbGF0aW9uLmNvbXBpbGF0aW9uSW5kZXggPT0gY29tcGls
YXRpb25JbmRleAotICAgICAgICAgICAgICAgIGVuZAotICAgICAgICAgICAgZW5kCiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIGlmIGZpcnN0CiAgICAgICAgICAgICAgICAgZmlyc3QgPSBmYWxz
ZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222892</attachid>
            <date>2014-02-01 14:19:26 -0800</date>
            <delta_ts>2014-02-01 14:45:37 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>37939</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTYzMjQ5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBA
CisyMDE0LTAyLTAxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
SlNDIHByb2ZpbGVyIHNob3VsZCBzaG93IHJlYXNvbnMgZm9yIGpldHRpc29uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjgwNDcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIEhlbmNlZm9ydGgg
aWYgeW91IHdhbnQgdG8gamV0dGlzb24gYSBDb2RlQmxvY2ssIHlvdSBnb3R0YSB0ZWxsIHRoZSBQ
cm9maWxlciB3aHkgeW91IGRpZAorICAgICAgICBpdC4gVGhpcyBtYWtlcyBmaWd1cmluZyBvdXQg
Y29udmVyZ2VuY2UgaXNzdWVzIC0gd2hlcmUgc29tZSBjb2RlIHNlZW1zIHRvIHRha2UgYSBsb25n
CisgICAgICAgIHRpbWUgdG8gZ2V0IGludG8gdGhlIHRvcCB0aWVyIGNvbXBpbGVyIC0gYSBsb3Qg
ZWFzaWVyLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZp
bGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRD
b3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpqZXR0aXNvbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkQnJlYWtwb2lu
dCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c2V0U3RlcHBpbmdNb2RlKToKKyAgICAgICAg
KiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2tKZXR0
aXNvbmluZ1dhdGNocG9pbnQuY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2tKZXR0aXNvbmlu
Z1dhdGNocG9pbnQ6OmZpcmVJbnRlcm5hbCk6CisgICAgICAgICogYnl0ZWNvZGUvUHJvZmlsZWRD
b2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuY3BwOgorICAgICAgICAoSlNDOjpQcm9maWxl
ZENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludDo6ZmlyZUludGVybmFsKToKKyAgICAgICAg
KiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3Bw
OgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uY3BwOgorICAgICAgICAo
SlNDOjpQcm9maWxlcjo6Q29tcGlsYXRpb246OkNvbXBpbGF0aW9uKToKKyAgICAgICAgKEpTQzo6
UHJvZmlsZXI6OkNvbXBpbGF0aW9uOjp0b0pTKToKKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxl
ckNvbXBpbGF0aW9uLmg6CisgICAgICAgIChKU0M6OlByb2ZpbGVyOjpDb21waWxhdGlvbjo6c2V0
SmV0dGlzb25SZWFzb24pOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVySmV0dGlzb25SZWFz
b24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICog
cHJvZmlsZXIvUHJvZmlsZXJKZXR0aXNvblJlYXNvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50
aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAg
ICAgIChKU0M6OlNldEVuYWJsZWRQcm9maWxlckZ1bmN0b3I6Om9wZXJhdG9yKCkpOgorCiAyMDE0
LTAyLTAxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBTYXlpbmcg
ImppdFR5cGUoKSA9PSBKSVRDb2RlOjpERkdKSVQiIGlzIGFsbW9zdCBuZXZlciBjb3JyZWN0LgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTYzMjQ5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0zMDQsNiArMzA0LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBwcm9maWxl
ci9Qcm9maWxlckNvbXBpbGF0aW9uS2luZC5jcHAKICAgICBwcm9maWxlci9Qcm9maWxlckNvbXBp
bGVkQnl0ZWNvZGUuY3BwCiAgICAgcHJvZmlsZXIvUHJvZmlsZXJEYXRhYmFzZS5jcHAKKyAgICBw
cm9maWxlci9Qcm9maWxlckpldHRpc29uUmVhc29uLmNwcAogICAgIHByb2ZpbGVyL1Byb2ZpbGVy
T1NSRXhpdC5jcHAKICAgICBwcm9maWxlci9Qcm9maWxlck9TUkV4aXRTaXRlLmNwcAogICAgIHBy
b2ZpbGVyL1Byb2ZpbGVyT3JpZ2luLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDE2MzI0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC04MTksNiArODE5LDgg
QEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3By
b2ZpbGVyL1Byb2ZpbGVyRGF0YWJhc2UuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJv
ZmlsZXIvUHJvZmlsZXJEYXRhYmFzZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmls
ZXIvUHJvZmlsZXJFeGVjdXRpb25Db3VudGVyLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
cm9maWxlci9Qcm9maWxlckpldHRpc29uUmVhc29uLmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRD
b3JlL3Byb2ZpbGVyL1Byb2ZpbGVySmV0dGlzb25SZWFzb24uaCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyT3JpZ2luLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL3Byb2ZpbGVyL1Byb2ZpbGVyT3JpZ2luLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
cm9maWxlci9Qcm9maWxlck9yaWdpblN0YWNrLmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2oJKHJldmlzaW9uIDE2MzI0OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTU1Myw2ICs1NTMsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccHJvZmlsZXJcUHJvZmlsZXJDb21waWxhdGlvbktpbmQuY3BwIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccHJvZmlsZXJcUHJvZmlsZXJDb21waWxlZEJ5dGVjb2RlLmNwcCIgLz4K
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHByb2ZpbGVyXFByb2ZpbGVyRGF0YWJhc2UuY3Bw
IiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccHJvZmlsZXJcUHJvZmlsZXJKZXR0aXNv
blJlYXNvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwcm9maWxlclxQcm9m
aWxlck9yaWdpbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwcm9maWxlclxQ
cm9maWxlck9yaWdpblN0YWNrLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBy
b2ZpbGVyXFByb2ZpbGVyT1NSRXhpdC5jcHAiIC8+CkBAIC0xMTYzLDYgKzExNjQsNyBAQAogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccHJvZmlsZXJcUHJvZmlsZXJDb21waWxlZEJ5dGVjb2Rl
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwcm9maWxlclxQcm9maWxlckRhdGFi
YXNlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwcm9maWxlclxQcm9maWxlckV4
ZWN1dGlvbkNvdW50ZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHByb2ZpbGVy
XFByb2ZpbGVySmV0dGlzb25SZWFzb24uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHByb2ZpbGVyXFByb2ZpbGVyT3JpZ2luLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
Llxwcm9maWxlclxQcm9maWxlck9yaWdpblN0YWNrLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxwcm9maWxlclxQcm9maWxlck9TUkV4aXQuaCIgLz4KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNjMyNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtODEsNiArODEsOCBAQAogCQkwRjE1RjE1RjE0QjdBNzNFMDA1REUzN0QgLyogQ29tbW9u
U2xvd1BhdGhzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjE1RjE1RDE0QjdBNzNBMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYxNjAxNUQxNTYxOThD
OTAwQzI1ODdDIC8qIERGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxNjAxNUExNTYxOThCRjAw
QzI1ODdDIC8qIERGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwICovOyB9OwogCQkw
RjE2MDE1RTE1NjE5OEM5MDBDMjU4N0MgLyogREZHQXJndW1lbnRzU2ltcGxpZmljYXRpb25QaGFz
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxNjAx
NUIxNTYxOThCRjAwQzI1ODdDIC8qIERGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjE5MENB
QzE4OUQ4MkY2MDAwQUU1RjAgLyogUHJvZmlsZXJKZXR0aXNvblJlYXNvbi5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjE5MENBQTE4OUQ4MkY2MDAw
QUU1RjAgLyogUHJvZmlsZXJKZXR0aXNvblJlYXNvbi5jcHAgKi87IH07CisJCTBGMTkwQ0FEMTg5
RDgyRjYwMDBBRTVGMCAvKiBQcm9maWxlckpldHRpc29uUmVhc29uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjE5MENBQjE4OUQ4MkY2MDAwQUU1RjAg
LyogUHJvZmlsZXJKZXR0aXNvblJlYXNvbi5oICovOyB9OwogCQkwRjFFM0E0NjE1MzRDQkFGMDAw
Rjk0NTYgLyogREZHQXJndW1lbnRQb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxRTNBNDMxNTM0Q0JBRDAwMEY5NDU2IC8qIERGR0FyZ3Vt
ZW50UG9zaXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwRjFFM0E0NzE1MzRDQkI5MDAwRjk0NTYgLyogREZHRG91YmxlRm9ybWF0U3RhdGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMUUzQTQ0
MTUzNENCQUQwMDBGOTQ1NiAvKiBERkdEb3VibGVGb3JtYXRTdGF0ZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMUUzQTY3MTUzQTIxRTIwMDBG
OTQ1NiAvKiBERkdTaWxlbnRSZWdpc3RlclNhdmVQbGFuLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjFFM0E2NTE1M0EyMURGMDAwRjk0NTYgLyogREZH
U2lsZW50UmVnaXN0ZXJTYXZlUGxhbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC05MjIsNyArOTI0LDYgQEAKIAkJQTUwM0ZBMTkxODhFMEZCMDAw
MTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTMxODhFMEZBRjAwMTEwRjE0IC8qIEphdmFT
Y3JpcHRDYWxsRnJhbWUuY3BwICovOyB9OwogCQlBNTAzRkExQTE4OEUwRkIwMDAxMTBGMTQgLyog
SmF2YVNjcmlwdENhbGxGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTUwM0ZBMTQxODhFMEZBRjAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJh
bWUuaCAqLzsgfTsKIAkJQTUwM0ZBMUIxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENh
bGxGcmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNTAzRkExNTE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCAq
LzsgfTsKLQkJQTUwM0ZBMUMxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFt
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZB
MTYxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZS5oICovOyB9OwogCQlB
NTAzRkExRDE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNG
QTE3MTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3Bw
ICovOyB9OwogCQlBNTAzRkExRTE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZy
YW1lUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNTAzRkExODE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJv
dG90eXBlLmggKi87IH07CiAJCUE1MDNGQTIxMTg4RUZGNjgwMDExMEYxNCAvKiBTY3JpcHRCcmVh
a3BvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NTAzRkExRjE4OEVGRjY4MDAxMTBGMTQgLyogU2NyaXB0QnJlYWtwb2ludC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNDk4LDYgKzE0OTksOCBA
QAogCQkwRjE1RjE1RDE0QjdBNzNBMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbW1vblNsb3dQYXRocy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRjE2MDE1QTE1NjE5OEJGMDBDMjU4N0MgLyogREZHQXJndW1l
bnRzU2ltcGxpZmljYXRpb25QaGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmNwcDsgcGF0aCA9IGRmZy9E
RkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEYxNjAxNUIxNTYxOThCRjAwQzI1ODdDIC8qIERGR0FyZ3VtZW50c1NpbXBsaWZp
Y2F0aW9uUGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQXJndW1l
bnRzU2ltcGxpZmljYXRpb25QaGFzZS5oOyBwYXRoID0gZGZnL0RGR0FyZ3VtZW50c1NpbXBsaWZp
Y2F0aW9uUGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYxOTBDQUExODlE
ODJGNjAwMEFFNUYwIC8qIFByb2ZpbGVySmV0dGlzb25SZWFzb24uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUHJvZmlsZXJKZXR0aXNvblJlYXNvbi5jcHA7IHBhdGgg
PSBwcm9maWxlci9Qcm9maWxlckpldHRpc29uUmVhc29uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEYxOTBDQUIxODlEODJGNjAwMEFFNUYwIC8qIFByb2ZpbGVySmV0dGlzb25S
ZWFzb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUHJvZmlsZXJKZXR0aXNv
blJlYXNvbi5oOyBwYXRoID0gcHJvZmlsZXIvUHJvZmlsZXJKZXR0aXNvblJlYXNvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjFFM0E0MzE1MzRDQkFEMDAwRjk0NTYgLyogREZH
QXJndW1lbnRQb3NpdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdB
cmd1bWVudFBvc2l0aW9uLmg7IHBhdGggPSBkZmcvREZHQXJndW1lbnRQb3NpdGlvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjFFM0E0NDE1MzRDQkFEMDAwRjk0NTYgLyogREZH
RG91YmxlRm9ybWF0U3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZH
RG91YmxlRm9ybWF0U3RhdGUuaDsgcGF0aCA9IGRmZy9ERkdEb3VibGVGb3JtYXRTdGF0ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjFFM0E1MDE1MzdDMkNCMDAwRjk0NTYgLyog
REZHU2xvd1BhdGhHZW5lcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
REZHU2xvd1BhdGhHZW5lcmF0b3IuaDsgcGF0aCA9IGRmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDI5NSw2ICs0Mjk4LDggQEAKIAkJCQkw
RkY3Mjk5QzE2NkFEMzQ3MDAwRjVCQTMgLyogUHJvZmlsZXJEYXRhYmFzZS5jcHAgKi8sCiAJCQkJ
MEZGNzI5OUQxNjZBRDM0NzAwMEY1QkEzIC8qIFByb2ZpbGVyRGF0YWJhc2UuaCAqLywKIAkJCQkw
RkY3Mjk5RTE2NkFEMzQ3MDAwRjVCQTMgLyogUHJvZmlsZXJFeGVjdXRpb25Db3VudGVyLmggKi8s
CisJCQkJMEYxOTBDQUExODlEODJGNjAwMEFFNUYwIC8qIFByb2ZpbGVySmV0dGlzb25SZWFzb24u
Y3BwICovLAorCQkJCTBGMTkwQ0FCMTg5RDgyRjYwMDBBRTVGMCAvKiBQcm9maWxlckpldHRpc29u
UmVhc29uLmggKi8sCiAJCQkJMEZGNzI5OUYxNjZBRDM0NzAwMEY1QkEzIC8qIFByb2ZpbGVyT3Jp
Z2luLmNwcCAqLywKIAkJCQkwRkY3MjlBMDE2NkFEMzQ3MDAwRjVCQTMgLyogUHJvZmlsZXJPcmln
aW4uaCAqLywKIAkJCQkwRkY3MjlBMTE2NkFEMzQ3MDAwRjVCQTMgLyogUHJvZmlsZXJPcmlnaW5T
dGFjay5jcHAgKi8sCkBAIC00NjA2LDExICs0NjExLDExIEBACiAJCQkJODZBREQxNDUwRkRERUE5
ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUNFRUUx
NTE4N0YzQkFEMDBFNTVDOTkgLyogSW5zcGVjdG9yQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTY1QzAyODVEMTcxNzk2NjgwMDM1MUUzNSAvKiBBUk12N0RPcGNvZGUuaCBpbiBIZWFkZXJzICov
LAotIAkJCQkyQTY4Mjk1QjE4NzVGODA1MDBCNkMzRTIgLyogQ29weVdyaXRlQmFycmllci5oIGlu
IEhlYWRlcnMgKi8sCi0gICAgICAgICAgICAgICAgMkE0RUM5MEMxODYwRDZDMjAwOTRGNzgyIC8q
IFdyaXRlQmFycmllckJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkE2ODI5NUIxODc1Rjgw
NTAwQjZDM0UyIC8qIENvcHlXcml0ZUJhcnJpZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTJBNEVD
OTBDMTg2MEQ2QzIwMDk0Rjc4MiAvKiBXcml0ZUJhcnJpZXJCdWZmZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUZFNTkzMkE4MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE1MzI0MzkzMTg1Njk3MDkwMDJFRDY5MiAvKiBDb2RlR2VuZXJhdG9ySW5z
cGVjdG9yU3RyaW5ncy5weSBpbiBIZWFkZXJzICovLAotIAkJCQlBNTMyNDM5MjE4NTY5NzA5MDAy
RUQ2OTIgLyogQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weSBpbiBIZWFkZXJzICovLAorCQkJCUE1
MzI0MzkyMTg1Njk3MDkwMDJFRDY5MiAvKiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5IGluIEhl
YWRlcnMgKi8sCiAJCQkJMEYyNEU1NEYxN0VFMjc0OTAwQUJCMjE3IC8qIFRlbXBSZWdpc3RlclNl
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUwRTRCNjQxODgwOURENTAwNjhBNDZEIC8qIEpTR2xv
YmFsT2JqZWN0UnVudGltZUFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRUI1OEMxNTE4N0I4
QjE2MDA5OEVGMEIgLyogRXJyb3JIYW5kbGluZ1Njb3BlLmggaW4gSGVhZGVycyAqLywKQEAgLTQ2
MjIsNyArNDYyNyw3IEBACiAJCQkJMEY4MzM1QjgxNjM5QzFFQTAwMTQ0M0I1IC8qIEFycmF5QWxs
b2NhdGlvblByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1ODQwRTI5MTg3Q0E1RTYwMDg0
M0IxMCAvKiBpbmxpbmUtYW5kLW1pbmlmeS1zdHlsZXNoZWV0cy1hbmQtc2NyaXB0cy5weSBpbiBI
ZWFkZXJzICovLAogCQkJCUE1ODQwRTJCMTg3Q0E3NUIwMDg0M0IxMCAvKiBqc21pbi5weSBpbiBI
ZWFkZXJzICovLAotIAkJCQlBNTMyNDM5ODE4NTZBNDg5MDAyRUQ2OTIgLyogSW5zcGVjdG9ySlMu
anNvbiBpbiBIZWFkZXJzICovLAorCQkJCUE1MzI0Mzk4MTg1NkE0ODkwMDJFRDY5MiAvKiBJbnNw
ZWN0b3JKUy5qc29uIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NDBFMkExODdDQTc1OTAwODQzQjEw
IC8qIHh4ZC5wbCBpbiBIZWFkZXJzICovLAogCQkJCUZFQTA4NjIwMTgyQjdBMDQwMEY2RDg1MSAv
KiBCcmVha3BvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUYzNTE3QURCNUYzMDA1QUIx
NzQgLyogQXJyYXlCdWZmZXIuaCBpbiBIZWFkZXJzICovLApAQCAtNDczMyw3ICs0NzM4LDcgQEAK
IAkJCQlBMUEwMDlDMDE4MzFBMjJEMDBDRjg3MTEgLyogTWFjcm9Bc3NlbWJsZXJBUk02NC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODZFQzlEQzUxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0J5dGVDb2Rl
UGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ4NTMyODE4N0RGREVDMDA4M0I2ODcgLyog
RlRMQXZhaWxhYmxlUmVjb3ZlcnkuaCBpbiBIZWFkZXJzICovLAotICAgICAgICAgICAgICAgIEE1
OTNDRjg3MTg0MDM4Q0EwMEJGQ0UyNyAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmggaW4gSGVh
ZGVycyAqLywKKwkJCQlBNTkzQ0Y4NzE4NDAzOENBMDBCRkNFMjcgLyogSW5zcGVjdG9yQWdlbnRS
ZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNTZDMzYxNjI3QjBBRDAwN0YyNzgzIC8q
IERGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjdCMjk0QjE0QzNDRDJGMDA3QzNEQjEgLyogREZHQ2FwYWJpbGl0aWVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkZGQzk1ODE0RUY5MEEyMDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuaCBp
biBIZWFkZXJzICovLApAQCAtNTE0Miw2ICs1MTQ3LDcgQEAKIAkJCQlBNzAwODczRTE3Q0JFOEQz
MDBDM0U2NDMgLyogTWFwUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkI5MTZDMjE0
REEwMTRFMDBDQkFDODYgLyogTWFya2VkQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NTEwMDdDMTE4N0NDM0M2MDBCMzg4NzkgLyogSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9s
bGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjE5MENBRDE4OUQ4MkY2MDAwQUU1RjAgLyogUHJv
ZmlsZXJKZXR0aXNvblJlYXNvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQyRDZGMDkxMzUzOUEy
ODAwQjAyRTg2IC8qIE1hcmtlZEJsb2NrLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDE0NDhDQjEz
QTE3NkVDMDBGNUJBMUEgLyogTWFya2VkQmxvY2tTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0
RDJGM0RCMTM5RjRCRTIwMDQ5MTAzMSAvKiBNYXJrZWRTcGFjZS5oIGluIEhlYWRlcnMgKi8sCkBA
IC01OTc2LDcgKzU5ODIsNyBAQAogCQkJCTBGNkIxQ0M1MTg2MkM0NzgwMDg0NUQ5NyAvKiBGVExV
bndpbmRJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOUQzMzlBMTgwM0FEQjcwMDczQzJC
QyAvKiBGVExTdGFja01hcHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQTBBMTYxNzA2QkI5
MDAwQkI3MjJDIC8qIEZUTFN0YXRlLmNwcCBpbiBTb3VyY2VzICovLAotIAkJCQk3QzAwOENEMjE4
NkY4QTkzMDA5NTVDMjQgLyogSlNQcm9taXNlRnVuY3Rpb25zLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTdDMDA4Q0QyMTg2RjhBOTMwMDk1NUMyNCAvKiBKU1Byb21pc2VGdW5jdGlvbnMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEY2QjFDQjUxODVGQzlFOTAwODQ1RDk3IC8qIEZUTEpTQ2FsbC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjIzNUJFMTE3MTc4RTFDMDA2OTBDN0YgLyogRlRMVGh1
bmtzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1OTNDRjdDMTg0MDM2MDMwMEJGQ0UyNyAvKiBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTYxNTEsNiAr
NjE1Nyw3IEBACiAJCQkJMTQ0NjlERTMxMDdFQzdFNzAwNjUwNDQ2IC8qIE51bWJlck9iamVjdC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDQ2OURFNDEwN0VDN0U3MDA2NTA0NDYgLyogTnVtYmVy
UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RjNFRUJFMTY4Q0RFOTMwMDc3Qjky
QSAvKiBPYmpDQ2FsbGJhY2tGdW5jdGlvbi5tbSBpbiBTb3VyY2VzICovLAorCQkJCTBGMTkwQ0FD
MTg5RDgyRjYwMDBBRTVGMCAvKiBQcm9maWxlckpldHRpc29uUmVhc29uLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTE0NDY5REU1MTA3RUM3RTcwMDY1MDQ0NiAvKiBPYmplY3RDb25zdHJ1Y3Rvci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDQ2OURFNjEwN0VDN0U3MDA2NTA0NDYgLyogT2JqZWN0
UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxMjRBOEY4MEU1NTU3NzUwMDMwOTFG
MSAvKiBPcGFxdWVKU1N0cmluZy5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAxNjMyNDkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjI4Nyw3ICsyMjg3LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25k
aXRpb25hbGx5KAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBq
ZXR0aXNvbigpOworICAgICAgICBqZXR0aXNvbihQcm9maWxlcjo6SmV0dGlzb25EdWVUb1dlYWtS
ZWZlcmVuY2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmIC8vIEVOQUJMRShERkdf
SklUKQpAQCAtMjc2NiwxOSArMjc2NiwyNCBAQCBERkc6OkNhcGFiaWxpdHlMZXZlbCBGdW5jdGlv
bkNvZGVCbG9jazo6CiB9CiAjZW5kaWYKIAotdm9pZCBDb2RlQmxvY2s6OmpldHRpc29uKFJlb3B0
aW1pemF0aW9uTW9kZSBtb2RlKQordm9pZCBDb2RlQmxvY2s6OmpldHRpc29uKFByb2ZpbGVyOjpK
ZXR0aXNvblJlYXNvbiByZWFzb24sIFJlb3B0aW1pemF0aW9uTW9kZSBtb2RlKQogeworICAgIFJF
TEVBU0VfQVNTRVJUKHJlYXNvbiAhPSBQcm9maWxlcjo6Tm90SmV0dGlzb25lZCk7CisgICAgCiAj
aWYgRU5BQkxFKERGR19KSVQpCiAgICAgaWYgKERGRzo6c2hvdWxkU2hvd0Rpc2Fzc2VtYmx5KCkp
IHsKICAgICAgICAgZGF0YUxvZygiSmV0dGlzb25pbmcgIiwgKnRoaXMpOwogICAgICAgICBpZiAo
bW9kZSA9PSBDb3VudFJlb3B0aW1pemF0aW9uKQogICAgICAgICAgICAgZGF0YUxvZygiIGFuZCBj
b3VudGluZyByZW9wdGltaXphdGlvbiIpOwotICAgICAgICBkYXRhTG9nKCIuXG4iKTsKKyAgICAg
ICAgZGF0YUxvZygiIGR1ZSB0byAiLCByZWFzb24sICIuXG4iKTsKICAgICB9CiAgICAgCiAgICAg
RGVmZXJHQ0ZvckFXaGlsZSBkZWZlckdDKCptX2hlYXApOwogICAgIFJFTEVBU0VfQVNTRVJUKEpJ
VENvZGU6OmlzT3B0aW1pemluZ0pJVChqaXRUeXBlKCkpKTsKICAgICAKKyAgICBpZiAoUHJvZmls
ZXI6OkNvbXBpbGF0aW9uKiBjb21waWxhdGlvbiA9IGppdENvZGUoKS0+ZGZnQ29tbW9uKCktPmNv
bXBpbGF0aW9uLmdldCgpKQorICAgICAgICBjb21waWxhdGlvbi0+c2V0SmV0dGlzb25SZWFzb24o
cmVhc29uKTsKKyAgICAKICAgICAvLyBXZSB3YW50IHRvIGFjY29tcGxpc2ggdHdvIHRoaW5ncyBo
ZXJlOgogICAgIC8vIDEpIE1ha2Ugc3VyZSB0aGF0IGlmIHRoaXMgQ29kZUJsb2NrIGlzIG9uIHRo
ZSBzdGFjayByaWdodCBub3csIHRoZW4gaWYgd2UgcmV0dXJuIHRvIGl0CiAgICAgLy8gICAgd2Ug
c2hvdWxkIE9TUiBleGl0IGF0IHRoZSB0b3Agb2YgdGhlIG5leHQgYnl0ZWNvZGUgaW5zdHJ1Y3Rp
b24gYWZ0ZXIgdGhlIHJldHVybi4KQEAgLTM1NTksMTQgKzM1NjQsMTQgQEAgdm9pZCBDb2RlQmxv
Y2s6OmFkZEJyZWFrcG9pbnQodW5zaWduZWQgbgogICAgIG1fbnVtQnJlYWtwb2ludHMgKz0gbnVt
QnJlYWtwb2ludHM7CiAgICAgQVNTRVJUKG1fbnVtQnJlYWtwb2ludHMpOwogICAgIGlmIChKSVRD
b2RlOjppc09wdGltaXppbmdKSVQoaml0VHlwZSgpKSkKLSAgICAgICAgamV0dGlzb24oKTsKKyAg
ICAgICAgamV0dGlzb24oUHJvZmlsZXI6OkpldHRpc29uRHVlVG9EZWJ1Z2dlckJyZWFrcG9pbnQp
OwogfQogCiB2b2lkIENvZGVCbG9jazo6c2V0U3RlcHBpbmdNb2RlKENvZGVCbG9jazo6U3RlcHBp
bmdNb2RlIG1vZGUpCiB7CiAgICAgbV9zdGVwcGluZ01vZGUgPSBtb2RlOwogICAgIGlmIChtb2Rl
ID09IFN0ZXBwaW5nTW9kZUVuYWJsZWQgJiYgSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGppdFR5
cGUoKSkpCi0gICAgICAgIGpldHRpc29uKCk7CisgICAgICAgIGpldHRpc29uKFByb2ZpbGVyOjpK
ZXR0aXNvbkR1ZVRvRGVidWdnZXJTdGVwcGluZyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNp
b24gMTYzMjQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5o
CSh3b3JraW5nIGNvcHkpCkBAIC02Niw2ICs2Niw3IEBACiAjaW5jbHVkZSAiTExJbnRDYWxsTGlu
a0luZm8uaCIKICNpbmNsdWRlICJMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oIgogI2luY2x1ZGUg
IlByb2ZpbGVyQ29tcGlsYXRpb24uaCIKKyNpbmNsdWRlICJQcm9maWxlckpldHRpc29uUmVhc29u
LmgiCiAjaW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlU3R1Yklu
Zm8uaCIKICNpbmNsdWRlICJVbmNvbmRpdGlvbmFsRmluYWxpemVyLmgiCkBAIC0yOTYsNyArMjk3
LDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzT3B0aW1pemVkUmVwbGFjZW1lbnQoKTsgLy8gdGhl
IHR5cGVUb1JlcGxhY2UgaXMgbXkgSklUVHlwZQogI2VuZGlmCiAKLSAgICB2b2lkIGpldHRpc29u
KFJlb3B0aW1pemF0aW9uTW9kZSA9IERvbnRDb3VudFJlb3B0aW1pemF0aW9uKTsKKyAgICB2b2lk
IGpldHRpc29uKFByb2ZpbGVyOjpKZXR0aXNvblJlYXNvbiwgUmVvcHRpbWl6YXRpb25Nb2RlID0g
RG9udENvdW50UmVvcHRpbWl6YXRpb24pOwogICAgIAogICAgIFNjcmlwdEV4ZWN1dGFibGUqIG93
bmVyRXhlY3V0YWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3duZXJFeGVjdXRhYmxlLmdldCgpOyB9
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tKZXR0aXNv
bmluZ1dhdGNocG9pbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuY3BwCShyZXZpc2lvbiAxNjMy
NDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSmV0dGlzb25p
bmdXYXRjaHBvaW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsNyArMzYsNyBAQCB2b2lkIENvZGVC
bG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludDo6ZmlyCiAgICAgaWYgKERGRzo6c2hvdWxkU2hvd0Rp
c2Fzc2VtYmx5KCkpCiAgICAgICAgIGRhdGFMb2coIkZpcmluZyB3YXRjaHBvaW50ICIsIFJhd1Bv
aW50ZXIodGhpcyksICIgb24gIiwgKm1fY29kZUJsb2NrLCAiXG4iKTsKIAotICAgIG1fY29kZUJs
b2NrLT5qZXR0aXNvbihDb3VudFJlb3B0aW1pemF0aW9uKTsKKyAgICBtX2NvZGVCbG9jay0+amV0
dGlzb24oUHJvZmlsZXI6OkpldHRpc29uRHVlVG9VbnByb2ZpbGVkV2F0Y2hwb2ludCwgQ291bnRS
ZW9wdGltaXphdGlvbik7CiAKICAgICBpZiAoaXNPbkxpc3QoKSkKICAgICAgICAgcmVtb3ZlKCk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxvY2tK
ZXR0aXNvbmluZ1dhdGNocG9pbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Qcm9maWxlZENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5jcHAJ
KHJldmlzaW9uIDE2MzI0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9m
aWxlZENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU2LDcgKzU2LDcgQEAgdm9pZCBQcm9maWxlZENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwbwog
ICAgICAgICAgICAgICAgIGV4aXRpbmdKSVRUeXBlRm9yKG1fY29kZUJsb2NrLT5qaXRUeXBlKCkp
KSk7CiAgICAgfQogICAgIAotICAgIG1fY29kZUJsb2NrLT5qZXR0aXNvbihDb3VudFJlb3B0aW1p
emF0aW9uKTsKKyAgICBtX2NvZGVCbG9jay0+amV0dGlzb24oUHJvZmlsZXI6OkpldHRpc29uRHVl
VG9Qcm9maWxlZFdhdGNocG9pbnQsIENvdW50UmVvcHRpbWl6YXRpb24pOwogICAgIAogICAgIGlm
IChpc09uTGlzdCgpKQogICAgICAgICByZW1vdmUoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTYzMjQ5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEzLCAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMTEwNyw3ICsxMTA3LDcgQEAgZXh0ZXJuICJDIiB2b2lkIEpJVF9PUEVSQVRJT04g
dHJpZ2dlclJlbwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgb3B0aW1pemVkQ29kZUJs
b2NrLT5qZXR0aXNvbihDb3VudFJlb3B0aW1pemF0aW9uKTsKKyAgICBvcHRpbWl6ZWRDb2RlQmxv
Y2stPmpldHRpc29uKFByb2ZpbGVyOjpKZXR0aXNvbkR1ZVRvT1NSRXhpdCwgQ291bnRSZW9wdGlt
aXphdGlvbik7CiB9CiAKICNpZiBFTkFCTEUoRlRMX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTYzMjQ5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTE0OCw3ICsxMTQ4LDcgQEAgU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aQogICAgICAgICAgICAgICAgICAgICAiVHJpZ2dlcmluZyByZW9wdGltaXphdGlvbiBvZiAi
LCAqY29kZUJsb2NrLAogICAgICAgICAgICAgICAgICAgICAiKCIsICpjb2RlQmxvY2stPnJlcGxh
Y2VtZW50KCksICIpIChpbiBsb29wKS5cbiIpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAg
Y29kZUJsb2NrLT5yZXBsYWNlbWVudCgpLT5qZXR0aXNvbihDb3VudFJlb3B0aW1pemF0aW9uKTsK
KyAgICAgICAgICAgIGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKS0+amV0dGlzb24oUHJvZmlsZXI6
OkpldHRpc29uRHVlVG9CYXNlbGluZUxvb3BSZW9wdGltaXphdGlvblRyaWdnZXIsIENvdW50UmVv
cHRpbWl6YXRpb24pOwogICAgICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCgwLCAwKTsKICAg
ICAgICAgfQogICAgIH0gZWxzZSB7CkBAIC0xMjMzLDcgKzEyMzMsNyBAQCBTbG93UGF0aFJldHVy
blR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpCiAgICAgICAgICAgICAgICAgIlRyaWdnZXJpbmcg
cmVvcHRpbWl6YXRpb24gb2YgIiwgKmNvZGVCbG9jaywgIiAtPiAiLAogICAgICAgICAgICAgICAg
ICpjb2RlQmxvY2stPnJlcGxhY2VtZW50KCksICIgKGFmdGVyIE9TUiBmYWlsKS5cbiIpOwogICAg
ICAgICB9Ci0gICAgICAgIG9wdGltaXplZENvZGVCbG9jay0+amV0dGlzb24oQ291bnRSZW9wdGlt
aXphdGlvbik7CisgICAgICAgIG9wdGltaXplZENvZGVCbG9jay0+amV0dGlzb24oUHJvZmlsZXI6
OkpldHRpc29uRHVlVG9CYXNlbGluZUxvb3BSZW9wdGltaXphdGlvblRyaWdnZXJPbk9TUkVudHJ5
RmFpbCwgQ291bnRSZW9wdGltaXphdGlvbik7CiAgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQo
MCwgMCk7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJv
ZmlsZXJDb21waWxhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Byb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uY3BwCShyZXZpc2lvbiAxNjMyNDkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBQ
cm9maWxlciB7CiBDb21waWxhdGlvbjo6Q29tcGlsYXRpb24oQnl0ZWNvZGVzKiBieXRlY29kZXMs
IENvbXBpbGF0aW9uS2luZCBraW5kKQogICAgIDogbV9ieXRlY29kZXMoYnl0ZWNvZGVzKQogICAg
ICwgbV9raW5kKGtpbmQpCisgICAgLCBtX2pldHRpc29uUmVhc29uKE5vdEpldHRpc29uZWQpCiAg
ICAgLCBtX251bUlubGluZWRHZXRCeUlkcygwKQogICAgICwgbV9udW1JbmxpbmVkUHV0QnlJZHMo
MCkKICAgICAsIG1fbnVtSW5saW5lZENhbGxzKDApCkBAIC0xMzEsNiArMTMyLDcgQEAgSlNWYWx1
ZSBDb21waWxhdGlvbjo6dG9KUyhFeGVjU3RhdGUqIGV4ZQogICAgIHJlc3VsdC0+cHV0RGlyZWN0
KGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5udW1JbmxpbmVkR2V0QnlJZHMsIGpz
TnVtYmVyKG1fbnVtSW5saW5lZEdldEJ5SWRzKSk7CiAgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhl
Yy0+dm0oKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLm51bUlubGluZWRQdXRCeUlkcywganNOdW1i
ZXIobV9udW1JbmxpbmVkUHV0QnlJZHMpKTsKICAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT52
bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubnVtSW5saW5lZENhbGxzLCBqc051bWJlcihtX251
bUlubGluZWRDYWxscykpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5qZXR0aXNvblJlYXNvbiwganNTdHJpbmcoZXhlYywgU3RyaW5nOjpm
cm9tVVRGOCh0b0NTdHJpbmcobV9qZXR0aXNvblJlYXNvbikpKSk7CiAgICAgCiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxl
ckNvbXBpbGF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2Zp
bGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uaAkocmV2aXNpb24gMTYzMjQ5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uaAkod29ya2luZyBjb3B5
KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIlByb2ZpbGVyQ29tcGlsYXRpb25LaW5kLmgi
CiAjaW5jbHVkZSAiUHJvZmlsZXJDb21waWxlZEJ5dGVjb2RlLmgiCiAjaW5jbHVkZSAiUHJvZmls
ZXJFeGVjdXRpb25Db3VudGVyLmgiCisjaW5jbHVkZSAiUHJvZmlsZXJKZXR0aXNvblJlYXNvbi5o
IgogI2luY2x1ZGUgIlByb2ZpbGVyT1NSRXhpdC5oIgogI2luY2x1ZGUgIlByb2ZpbGVyT1NSRXhp
dFNpdGUuaCIKICNpbmNsdWRlICJQcm9maWxlck9yaWdpblN0YWNrLmgiCkBAIC02OCwxMSArNjks
MTcgQEAgcHVibGljOgogICAgIHZvaWQgYWRkT1NSRXhpdFNpdGUoY29uc3QgVmVjdG9yPGNvbnN0
IHZvaWQqPiYgY29kZUFkZHJlc3Nlcyk7CiAgICAgT1NSRXhpdCogYWRkT1NSRXhpdCh1bnNpZ25l
ZCBpZCwgY29uc3QgT3JpZ2luU3RhY2smLCBFeGl0S2luZCwgYm9vbCBpc1dhdGNocG9pbnQpOwog
ICAgIAorICAgIHZvaWQgc2V0SmV0dGlzb25SZWFzb24oSmV0dGlzb25SZWFzb24gamV0dGlzb25S
ZWFzb24pCisgICAgeworICAgICAgICBtX2pldHRpc29uUmVhc29uID0gamV0dGlzb25SZWFzb247
CisgICAgfQorICAgIAogICAgIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqKSBjb25zdDsKICAgICAK
IHByaXZhdGU6CiAgICAgQnl0ZWNvZGVzKiBtX2J5dGVjb2RlczsKICAgICBDb21waWxhdGlvbktp
bmQgbV9raW5kOworICAgIEpldHRpc29uUmVhc29uIG1famV0dGlzb25SZWFzb247CiAgICAgVmVj
dG9yPFByb2ZpbGVkQnl0ZWNvZGVzPiBtX3Byb2ZpbGVkQnl0ZWNvZGVzOwogICAgIFZlY3RvcjxD
b21waWxlZEJ5dGVjb2RlPiBtX2Rlc2NyaXB0aW9uczsKICAgICBIYXNoTWFwPE9yaWdpblN0YWNr
LCBzdGQ6OnVuaXF1ZV9wdHI8RXhlY3V0aW9uQ291bnRlcj4+IG1fY291bnRlcnM7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJKZXR0aXNvblJlYXNvbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVySmV0
dGlzb25SZWFzb24uY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3By
b2ZpbGVyL1Byb2ZpbGVySmV0dGlzb25SZWFzb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlByb2ZpbGVySmV0dGlzb25SZWFzb24uaCIK
KworI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorCituYW1lc3BhY2UgV1RGIHsKKwordXNp
bmcgbmFtZXNwYWNlIEpTQzo6UHJvZmlsZXI7CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0
cmVhbSYgb3V0LCBKZXR0aXNvblJlYXNvbiByZWFzb24pCit7CisgICAgc3dpdGNoIChyZWFzb24p
IHsKKyAgICBjYXNlIE5vdEpldHRpc29uZWQ6CisgICAgICAgIG91dC5wcmludCgiTm90SmV0dGlz
b25lZCIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBKZXR0aXNvbkR1ZVRvV2Vha1JlZmVy
ZW5jZToKKyAgICAgICAgb3V0LnByaW50KCJXZWFrUmVmZXJlbmNlIik7CisgICAgICAgIHJldHVy
bjsKKyAgICBjYXNlIEpldHRpc29uRHVlVG9EZWJ1Z2dlckJyZWFrcG9pbnQ6CisgICAgICAgIG91
dC5wcmludCgiRGVidWdnZXJCcmVha3BvaW50Iik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNl
IEpldHRpc29uRHVlVG9EZWJ1Z2dlclN0ZXBwaW5nOgorICAgICAgICBvdXQucHJpbnQoIkRlYnVn
Z2VyU3RlcHBpbmciKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgSmV0dGlzb25EdWVUb0xl
Z2FjeVByb2ZpbGVyOgorICAgICAgICBvdXQucHJpbnQoIkxlZ2FjeVByb2ZpbGVyIik7CisgICAg
ICAgIHJldHVybjsKKyAgICBjYXNlIEpldHRpc29uRHVlVG9CYXNlbGluZUxvb3BSZW9wdGltaXph
dGlvblRyaWdnZXI6CisgICAgICAgIG91dC5wcmludCgiQmFzZWxpbmVMb29wUmVvcHRpbWl6YXRp
b25UcmlnZ2VyIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEpldHRpc29uRHVlVG9CYXNl
bGluZUxvb3BSZW9wdGltaXphdGlvblRyaWdnZXJPbk9TUkVudHJ5RmFpbDoKKyAgICAgICAgb3V0
LnByaW50KCJCYXNlbGluZUxvb3BSZW9wdGltaXphdGlvblRyaWdnZXJPbk9TUkVudHJ5RmFpbCIp
OworICAgICAgICByZXR1cm47CisgICAgY2FzZSBKZXR0aXNvbkR1ZVRvT1NSRXhpdDoKKyAgICAg
ICAgb3V0LnByaW50KCJPU1JFeGl0Iik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEpldHRp
c29uRHVlVG9Qcm9maWxlZFdhdGNocG9pbnQ6CisgICAgICAgIG91dC5wcmludCgiUHJvZmlsZWRX
YXRjaHBvaW50Iik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEpldHRpc29uRHVlVG9VbnBy
b2ZpbGVkV2F0Y2hwb2ludDoKKyAgICAgICAgb3V0LnByaW50KCJVbnByb2ZpbGVkV2F0Y2hwb2lu
dCIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcHJvZmlsZXIvUHJvZmlsZXJKZXR0aXNvblJlYXNvbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckpldHRpc29uUmVhc29uLmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJKZXR0
aXNvblJlYXNvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBQcm9maWxlckpldHRp
c29uUmVhc29uX2gKKyNkZWZpbmUgUHJvZmlsZXJKZXR0aXNvblJlYXNvbl9oCisKK25hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgUHJvZmlsZXIgeworCitlbnVtIEpldHRpc29uUmVhc29uIHsKKyAg
ICBOb3RKZXR0aXNvbmVkLAorICAgIEpldHRpc29uRHVlVG9XZWFrUmVmZXJlbmNlLAorICAgIEpl
dHRpc29uRHVlVG9EZWJ1Z2dlckJyZWFrcG9pbnQsCisgICAgSmV0dGlzb25EdWVUb0RlYnVnZ2Vy
U3RlcHBpbmcsCisgICAgSmV0dGlzb25EdWVUb0xlZ2FjeVByb2ZpbGVyLAorICAgIEpldHRpc29u
RHVlVG9CYXNlbGluZUxvb3BSZW9wdGltaXphdGlvblRyaWdnZXIsCisgICAgSmV0dGlzb25EdWVU
b0Jhc2VsaW5lTG9vcFJlb3B0aW1pemF0aW9uVHJpZ2dlck9uT1NSRW50cnlGYWlsLAorICAgIEpl
dHRpc29uRHVlVG9PU1JFeGl0LAorICAgIEpldHRpc29uRHVlVG9Qcm9maWxlZFdhdGNocG9pbnQs
CisgICAgSmV0dGlzb25EdWVUb1VucHJvZmlsZWRXYXRjaHBvaW50Cit9OworCit9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6UHJvZmlsZXIKKworbmFtZXNwYWNlIFdURiB7CisKK2NsYXNzIFByaW50U3Ry
ZWFtOwordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgSlNDOjpQcm9maWxlcjo6SmV0
dGlzb25SZWFzb24pOworCit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIFByb2ZpbGVy
SmV0dGlzb25SZWFzb25faAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25JZGVudGlmaWVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgJKHJldmlzaW9uIDE2MzI0OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTExNCw2ICsxMTQsNyBAQAogICAgIG1hY3JvKGlzUHJvdG90eXBlT2YpIFwKICAgICBtYWNy
byhpc1ZpZXcpIFwKICAgICBtYWNybyhpc1dhdGNocG9pbnQpIFwKKyAgICBtYWNybyhqZXR0aXNv
blJlYXNvbikgXAogICAgIG1hY3JvKGpvaW4pIFwKICAgICBtYWNybyhrZXlzKSBcCiAgICAgbWFj
cm8obGFzdEluZGV4KSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCShy
ZXZpc2lvbiAxNjMyNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTgzNiw3ICs4MzYsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBvcGVy
YXRvcigpKENvZGVCbG9jayogY29kZUJsb2NrKQogICAgIHsKICAgICAgICAgaWYgKEpJVENvZGU6
OmlzT3B0aW1pemluZ0pJVChjb2RlQmxvY2stPmppdFR5cGUoKSkpCi0gICAgICAgICAgICBjb2Rl
QmxvY2stPmpldHRpc29uKCk7CisgICAgICAgICAgICBjb2RlQmxvY2stPmpldHRpc29uKFByb2Zp
bGVyOjpKZXR0aXNvbkR1ZVRvTGVnYWN5UHJvZmlsZXIpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogfTsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE2MzI0OSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE0LTAyLTAxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0Bh
cHBsZS5jb20+CisKKyAgICAgICAgSlNDIHByb2ZpbGVyIHNob3VsZCBzaG93IHJlYXNvbnMgZm9y
IGpldHRpc29uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjgwNDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAg
CisgICAgICAgIEdhdmUgdGhlIHRvb2wgYSAibG9nIiBjb21tYW5kLCB0aGF0IHRlbGxzIHlvdSBh
bGwgb2YgdGhlIGludGVyZXN0aW5nIHRoaW5ncworICAgICAgICB0aGF0IGhhcHBlbmVkIHRvIGEg
cGllY2Ugb2YgYnl0ZWNvZGUsIGZyb20gdGhlIHN0YW5kcG9pbnQgb2Ygb3B0aW1pemF0aW9uLgor
ICAgICAgICBJdCdzIGEgZ3JlYXQgc3VtbWFyeSB2aWV3IGZvciBzZWVpbmcgaG93IG91ciB0aWVy
LXVwIG1hY2hpbmVyeSB3b3Jrcy4KKyAgICAgICAgCisgICAgICAgIFRoaXMgdXNlcyBhIGxvdCBv
ZiBpbmZvcm1hdGlvbiB0aGF0IHdhcyBhbHJlYWR5IGF2YWlsYWJsZSwgcGx1cyB0aGUgbmV3bHkK
KyAgICAgICAgYWRkZWQgamV0dGlzb25SZWFzb24gZmllbGQuCisKKyAgICAgICAgKiBTY3JpcHRz
L2Rpc3BsYXktcHJvZmlsZXItb3V0cHV0OgorCiAyMDE0LTAxLTMxICBSeW9zdWtlIE5pd2EgIDxy
bml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSBpbmxpbmUgbWVtYmVyIGZ1bmN0aW9u
cyBvZiBGcmFtZVNlbGVjdGlvbiB0aGF0IGFjY2VzcyBtX3NlbGVjdGlvbgpJbmRleDogVG9vbHMv
U2NyaXB0cy9kaXNwbGF5LXByb2ZpbGVyLW91dHB1dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3Jp
cHRzL2Rpc3BsYXktcHJvZmlsZXItb3V0cHV0CShyZXZpc2lvbiAxNjMyNDkpCisrKyBUb29scy9T
Y3JpcHRzL2Rpc3BsYXktcHJvZmlsZXItb3V0cHV0CSh3b3JraW5nIGNvcHkpCkBAIC0zMzEsNyAr
MzMxLDcgQEAgZW5kCiBjbGFzcyBDb21waWxhdGlvbgogICAgIGF0dHJfYWNjZXNzb3IgOmJ5dGVj
b2RlLCA6ZW5naW5lLCA6ZGVzY3JpcHRpb25zLCA6Y291bnRlcnMsIDpjb21waWxhdGlvbkluZGV4
CiAgICAgYXR0cl9hY2Nlc3NvciA6b3NyRXhpdHMsIDpwcm9maWxlZEJ5dGVjb2RlcywgOm51bUlu
bGluZWRHZXRCeUlkcywgOm51bUlubGluZWRQdXRCeUlkcwotICAgIGF0dHJfYWNjZXNzb3IgOm51
bUlubGluZWRDYWxscworICAgIGF0dHJfYWNjZXNzb3IgOm51bUlubGluZWRDYWxscywgOmpldHRp
c29uUmVhc29uCiAgICAgCiAgICAgZGVmIGluaXRpYWxpemUoanNvbikKICAgICAgICAgQGJ5dGVj
b2RlID0gJGJ5dGVjb2Rlc1tqc29uWyJieXRlY29kZXNJRCJdLnRvX2ldCkBAIC0zODQsNiArMzg0
LDcgQEAgY2xhc3MgQ29tcGlsYXRpb24KICAgICAgICAgQG51bUlubGluZWRHZXRCeUlkcyA9IGpz
b25bIm51bUlubGluZWRHZXRCeUlkcyJdCiAgICAgICAgIEBudW1JbmxpbmVkUHV0QnlJZHMgPSBq
c29uWyJudW1JbmxpbmVkUHV0QnlJZHMiXQogICAgICAgICBAbnVtSW5saW5lZENhbGxzID0ganNv
blsibnVtSW5saW5lZENhbGxzIl0KKyAgICAgICAgQGpldHRpc29uUmVhc29uID0ganNvblsiamV0
dGlzb25SZWFzb24iXQogICAgIGVuZAogICAgIAogICAgIGRlZiBjb2RlSGFzaFNvcnRLZXkKQEAg
LTM5NCw2ICszOTUsMjQgQEAgY2xhc3MgQ29tcGlsYXRpb24KICAgICAgICAgQGNvdW50ZXJzW29y
aWdpbl0KICAgICBlbmQKICAgICAKKyAgICBkZWYgdG90YWxDb3VudAorICAgICAgICBzdW0gPSAw
CisgICAgICAgIEBjb3VudGVycy52YWx1ZXMuZWFjaCB7CisgICAgICAgICAgICB8IHZhbHVlIHwK
KyAgICAgICAgICAgIHN1bSArPSB2YWx1ZS5jb3VudAorICAgICAgICB9CisgICAgICAgIHN1bQor
ICAgIGVuZAorICAgIAorICAgIGRlZiBtYXhDb3VudAorICAgICAgICBtYXggPSAwCisgICAgICAg
IEBjb3VudGVycy52YWx1ZXMuZWFjaCB7CisgICAgICAgICAgICB8IHZhbHVlIHwKKyAgICAgICAg
ICAgIG1heCA9IFttYXgsIHZhbHVlLmNvdW50XS5tYXgKKyAgICAgICAgfQorICAgICAgICBtYXgK
KyAgICBlbmQKKyAgICAKICAgICBkZWYgdG9fcwogICAgICAgICAiI3tieXRlY29kZX0tI3tjb21w
aWxhdGlvbkluZGV4fS0je2VuZ2luZX0iCiAgICAgZW5kCkBAIC00MTcsNyArNDM2LDE4IEBAIGNs
YXNzIERlc2NyaXB0aW9uTGluZQogICAgICAgICBlbmQKICAgICBlbmQKIGVuZAotICAgICAgICAg
ICAgCisKK2RlZiBvcmlnaW5Ub1ByaW50U3RhY2sob3JpZ2luKQorICAgICgwLi4uKG9yaWdpbi5z
aXplIC0gMSkpLm1hcCB7CisgICAgICAgIHwgaW5kZXggfAorICAgICAgICAiYmNcIyN7b3JpZ2lu
W2luZGV4XS5ieXRlY29kZUluZGV4fSAtLT4gI3tvcmlnaW5baW5kZXggKyAxXS5ieXRlY29kZXN9
IgorICAgIH0KK2VuZAorCitkZWYgb3JpZ2luVG9TdHJpbmcob3JpZ2luKQorICAgIG9yaWdpblRv
UHJpbnRTdGFjayhvcmlnaW4pLmpvaW4oIiAiKSArICJiY1wjI3tvcmlnaW5bLTFdLmJ5dGVjb2Rl
SW5kZXh9IgorZW5kCisKIGlmIEFSR1YubGVuZ3RoICE9IDEKICAgICAkc3RkZXJyLnB1dHMgIlVz
YWdlOiBkaXNwbGF5LXByb2ZpbGVyLW91dHB1dCA8cGF0aCB0byBwcm9maWxlciBvdXRwdXQgZmls
ZT4iCiAgICAgJHN0ZGVyci5wdXRzCkBAIC02MjQsNiArNjU0LDY5IEBAIGRlZiBzdW1tYXJ5KG1v
ZGUpCiAgICAgfQogZW5kCiAKK2RlZiBxdWVyeUNvbXBpbGF0aW9ucyhjb21tYW5kLCBhcmdzKQor
ICAgIGNvbXBpbGF0aW9uSW5kZXggPSBuaWwKKyAgICAKKyAgICBjYXNlIGFyZ3MubGVuZ3RoCisg
ICAgd2hlbiAxCisgICAgICAgIGhhc2ggPSBhcmdzWzBdCisgICAgICAgIGVuZ2luZSA9IG5pbAor
ICAgIHdoZW4gMgorICAgICAgICBpZiBtYXlCZUhhc2goYXJnc1swXSkKKyAgICAgICAgICAgIGhh
c2ggPSBhcmdzWzBdCisgICAgICAgICAgICBlbmdpbmUgPSBhcmdzWzFdCisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGVuZ2luZSA9IGFyZ3NbMF0KKyAgICAgICAgICAgIGhhc2ggPSBhcmdzWzFd
CisgICAgICAgIGVuZAorICAgIGVsc2UKKyAgICAgICAgcHV0cyAiVXNhZ2U6ICN7Y29tbWFuZH0g
PGNvZGUgYmxvY2sgaGFzaD4gPGVuZ2luZT4iCisgICAgICAgIHJldHVybgorICAgIGVuZAorICAg
IAorICAgIGlmIGhhc2ggYW5kIGhhc2ggPX4gLy0oLT9bMC05XSspLS8KKyAgICAgICAgaGFzaCA9
ICR+LnByZV9tYXRjaAorICAgICAgICBlbmdpbmUgPSAkfi5wb3N0X21hdGNoCisgICAgICAgIGNv
bXBpbGF0aW9uSW5kZXggPSAkMS50b19pCisgICAgZW5kCisgICAgCisgICAgaWYgZW5naW5lIGFu
ZCBub3QgJGVuZ2luZXMuaW5kZXgoZW5naW5lKQorICAgICAgICBwYXR0ZXJuID0gUmVnZXhwLm5l
dyhSZWdleHAuZXNjYXBlKGVuZ2luZSksICJpIikKKyAgICAgICAgdHJ1ZUVuZ2luZSA9IG5pbAor
ICAgICAgICAkZW5naW5lcy5lYWNoIHsKKyAgICAgICAgICAgIHwgbXlFbmdpbmUgfAorICAgICAg
ICAgICAgaWYgbXlFbmdpbmUgPX4gcGF0dGVybgorICAgICAgICAgICAgICAgIHRydWVFbmdpbmUg
PSBteUVuZ2luZQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbmQKKyAgICAg
ICAgfQorICAgICAgICB1bmxlc3MgdHJ1ZUVuZ2luZQorICAgICAgICAgICAgcHV0cyAiI3tlbmdp
bmV9IGlzIG5vdCBhIHZhbGlkIGVuZ2luZSwgdHJ5ICN7JGVuZ2luZXMuam9pbignIG9yICcpfS4i
CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZW5kCisgICAgICAgIGVuZ2luZSA9IHRydWVF
bmdpbmUKKyAgICBlbmQKKyAgICAKKyAgICBpZiBoYXNoID09ICIqIgorICAgICAgICBoYXNoID0g
bmlsCisgICAgZW5kCisgICAgCisgICAgc29ydEJ5TW9kZSgkY29tcGlsYXRpb25zKS5lYWNoIHsK
KyAgICAgICAgfCBjb21waWxhdGlvbiB8CisgICAgICAgIG5leHQgaWYgaGFzaCBhbmQgbm90IGNv
bXBpbGF0aW9uLmJ5dGVjb2RlLm1hdGNoZXMoaGFzaCkKKyAgICAgICAgbmV4dCBpZiBlbmdpbmUg
YW5kIGNvbXBpbGF0aW9uLmVuZ2luZSAhPSBlbmdpbmUKKyAgICAgICAgaWYgY29tcGlsYXRpb25J
bmRleAorICAgICAgICAgICAgaWYgY29tcGlsYXRpb25JbmRleCA8IDAKKyAgICAgICAgICAgICAg
ICBuZXh0IHVubGVzcyBjb21waWxhdGlvbi5ieXRlY29kZS5jb21waWxhdGlvbnNbY29tcGlsYXRp
b25JbmRleF0gPT0gY29tcGlsYXRpb24KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICBuZXh0IHVubGVzcyBjb21waWxhdGlvbi5jb21waWxhdGlvbkluZGV4ID09IGNvbXBpbGF0aW9u
SW5kZXgKKyAgICAgICAgICAgIGVuZAorICAgICAgICBlbmQKKyAgICAgICAgCisgICAgICAgIHlp
ZWxkIGNvbXBpbGF0aW9uCisgICAgfQorZW5kCisKIGRlZiBleGVjdXRlQ29tbWFuZCgqY29tbWFu
ZEFycmF5KQogICAgIGNvbW1hbmQgPSBjb21tYW5kQXJyYXlbMF0KICAgICBhcmdzID0gY29tbWFu
ZEFycmF5WzEuLi0xXQpAQCAtNjM0LDYgKzcyNyw3IEBAIGRlZiBleGVjdXRlQ29tbWFuZCgqY29t
bWFuZEFycmF5KQogICAgICAgICBwdXRzICJzb3VyY2UgICAgICAgICAgU2hvdyB0aGUgc291cmNl
IGZvciBhIGNvZGUgYmxvY2suIgogICAgICAgICBwdXRzICJieXRlY29kZSAoYikgICAgU2hvdyB0
aGUgYnl0ZWNvZGUgZm9yIGEgY29kZSBibG9jaywgd2l0aCBjb3VudHMuIgogICAgICAgICBwdXRz
ICJwcm9maWxpbmcgKHApICAgU2hvdyB0aGUgKGludGVybmFsKSBwcm9maWxpbmcgZGF0YSBmb3Ig
YSBjb2RlIGJsb2NrLiIKKyAgICAgICAgcHV0cyAibG9nIChsKSAgICAgICAgIExpc3QgdGhlIGNv
bXBpbGF0aW9ucywgZXhpdHMsIGFuZCBqZXR0aXNvbnMgaW52b2x2aW5nIHRoaXMgY29kZSBibG9j
ay4iCiAgICAgICAgIHB1dHMgImRpc3BsYXkgKGQpICAgICBEaXNwbGF5IGRldGFpbHMgZm9yIGEg
Y29kZSBibG9jay4iCiAgICAgICAgIHB1dHMgImlubGluZXMgICAgICAgICBTaG93IGFsbCBpbmxp
bmluZyBzdGFja3MgdGhhdCB0aGUgY29kZSBibG9jayB3YXMgb24uIgogICAgICAgICBwdXRzICJj
b3VudHMgICAgICAgICAgU2V0IHdoZXRoZXIgdG8gc2hvdyBjb3VudHMgZm9yICdieXRlY29kZScg
YW5kICdkaXNwbGF5Jy4iCkBAIC03NTAsNiArODQ0LDIyIEBAIGRlZiBleGVjdXRlQ29tbWFuZCgq
Y29tbWFuZEFycmF5KQogICAgICAgICAgICAgICAgIGVuZAogICAgICAgICAgICAgfQogICAgICAg
ICB9CisgICAgd2hlbiAibG9nIiwgImwiCisgICAgICAgIHF1ZXJ5Q29tcGlsYXRpb25zKCJsb2ci
LCBhcmdzKSB7CisgICAgICAgICAgICB8IGNvbXBpbGF0aW9uIHwKKyAgICAgICAgICAgIHB1dHMg
IkNvbXBpbGF0aW9uICN7Y29tcGlsYXRpb259OiIKKyAgICAgICAgICAgIHB1dHMgIiAgICBUb3Rh
bCBjb3VudDogI3tjb21waWxhdGlvbi50b3RhbENvdW50fSAgTWF4IGNvdW50OiAje2NvbXBpbGF0
aW9uLm1heENvdW50fSIKKyAgICAgICAgICAgIGNvbXBpbGF0aW9uLm9zckV4aXRzLnZhbHVlcy5l
YWNoIHsKKyAgICAgICAgICAgICAgICB8IGV4aXRzIHwKKyAgICAgICAgICAgICAgICBleGl0cy5l
YWNoIHsKKyAgICAgICAgICAgICAgICAgICAgfCBleGl0IHwKKyAgICAgICAgICAgICAgICAgICAg
cHV0cyAiICAgIEVYSVQ6IGF0ICN7b3JpZ2luVG9TdHJpbmcoZXhpdC5vcmlnaW4pfSBkdWUgdG8g
I3tleGl0LmV4aXRLaW5kfSwgI3tleGl0LmNvdW50fSB0aW1lcyIKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiBjb21waWxhdGlvbi5qZXR0aXNvblJlYXNv
biAhPSAiTm90SmV0dGlzb25lZCIKKyAgICAgICAgICAgICAgICBwdXRzICIgICAgSmV0dGlzb25l
ZCBkdWUgdG8gI3tjb21waWxhdGlvbi5qZXR0aXNvblJlYXNvbn0iCisgICAgICAgICAgICBlbmQK
KyAgICAgICAgfQogICAgIHdoZW4gImlubGluZXMiCiAgICAgICAgIGlmIGFyZ3MubGVuZ3RoICE9
IDEKICAgICAgICAgICAgIHB1dHMgIlVzYWdlOiBpbmxpbmVzIDxjb2RlIGJsb2NrIGhhc2g+IgpA
QCAtNzkzLDEzICs5MDMsNiBAQCBkZWYgZXhlY3V0ZUNvbW1hbmQoKmNvbW1hbmRBcnJheSkKICAg
ICAgICAgICAgICAgICBwcmludEFycmF5ID0gW10KICAgICAgICAgICAgICAgICBsYXN0UHJpbnRT
dGFjayA9IFtdCiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgZGVmIG9yaWdpblRv
UHJpbnRTdGFjayhvcmlnaW4pCi0gICAgICAgICAgICAgICAgICAgICgwLi4uKG9yaWdpbi5zaXpl
IC0gMSkpLm1hcCB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB8IGluZGV4IHwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICJiY1wjI3tvcmlnaW5baW5kZXhdLmJ5dGVjb2RlSW5kZXh9IC0tPiAj
e29yaWdpbltpbmRleCArIDFdLmJ5dGVjb2Rlc30iCi0gICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICBlbmQKLSAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBkZWYg
cHJpbnRTdGFjayhwcmludEFycmF5LCBzdGFjaywgbGFzdFN0YWNrKQogICAgICAgICAgICAgICAg
ICAgICBzdGlsbENvbW1vbiA9IHRydWUKICAgICAgICAgICAgICAgICAgICAgc3RhY2suZWFjaF93
aXRoX2luZGV4IHsKQEAgLTgyNyw2NyArOTMwLDEzIEBAIGRlZiBleGVjdXRlQ29tbWFuZCgqY29t
bWFuZEFycmF5KQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgd2hlbiAiZGlzcGxheSIs
ICJkIgotICAgICAgICBjb21waWxhdGlvbkluZGV4ID0gbmlsCi0gICAgICAgIAotICAgICAgICBj
YXNlIGFyZ3MubGVuZ3RoCi0gICAgICAgIHdoZW4gMQotICAgICAgICAgICAgaGFzaCA9IGFyZ3Nb
MF0KLSAgICAgICAgICAgIGVuZ2luZSA9IG5pbAotICAgICAgICB3aGVuIDIKLSAgICAgICAgICAg
IGlmIG1heUJlSGFzaChhcmdzWzBdKQotICAgICAgICAgICAgICAgIGhhc2ggPSBhcmdzWzBdCi0g
ICAgICAgICAgICAgICAgZW5naW5lID0gYXJnc1sxXQotICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgIGVuZ2luZSA9IGFyZ3NbMF0KLSAgICAgICAgICAgICAgICBoYXNoID0gYXJnc1sx
XQotICAgICAgICAgICAgZW5kCi0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHB1dHMgIlVzYWdl
OiBzdW1tYXJ5IDxjb2RlIGJsb2NrIGhhc2g+IDxlbmdpbmU+IgotICAgICAgICAgICAgcmV0dXJu
Ci0gICAgICAgIGVuZAotICAgICAgICAKLSAgICAgICAgaWYgaGFzaCBhbmQgaGFzaCA9fiAvLSgt
P1swLTldKyktLwotICAgICAgICAgICAgaGFzaCA9ICR+LnByZV9tYXRjaAotICAgICAgICAgICAg
ZW5naW5lID0gJH4ucG9zdF9tYXRjaAotICAgICAgICAgICAgY29tcGlsYXRpb25JbmRleCA9ICQx
LnRvX2kKLSAgICAgICAgZW5kCi0gICAgICAgIAotICAgICAgICBpZiBlbmdpbmUgYW5kIG5vdCAk
ZW5naW5lcy5pbmRleChlbmdpbmUpCi0gICAgICAgICAgICBwYXR0ZXJuID0gUmVnZXhwLm5ldyhS
ZWdleHAuZXNjYXBlKGVuZ2luZSksICJpIikKLSAgICAgICAgICAgIHRydWVFbmdpbmUgPSBuaWwK
LSAgICAgICAgICAgICRlbmdpbmVzLmVhY2ggewotICAgICAgICAgICAgICAgIHwgbXlFbmdpbmUg
fAotICAgICAgICAgICAgICAgIGlmIG15RW5naW5lID1+IHBhdHRlcm4KLSAgICAgICAgICAgICAg
ICAgICAgdHJ1ZUVuZ2luZSA9IG15RW5naW5lCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0g
ICAgICAgICAgICAgICAgZW5kCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB1bmxlc3MgdHJ1
ZUVuZ2luZQotICAgICAgICAgICAgICAgIHB1dHMgIiN7ZW5naW5lfSBpcyBub3QgYSB2YWxpZCBl
bmdpbmUsIHRyeSAjeyRlbmdpbmVzLmpvaW4oJyBvciAnKX0uIgotICAgICAgICAgICAgICAgIHJl
dHVybgotICAgICAgICAgICAgZW5kCi0gICAgICAgICAgICBlbmdpbmUgPSB0cnVlRW5naW5lCi0g
ICAgICAgIGVuZAotICAgICAgICAKLSAgICAgICAgaWYgaGFzaCA9PSAiKiIKLSAgICAgICAgICAg
IGhhc2ggPSBuaWwKLSAgICAgICAgZW5kCi0gICAgICAgIAogICAgICAgICBhY3R1YWxDb3VudENv
bHMgPSAxMwogICAgICAgICBzb3VyY2VDb3VudENvbHMgPSAxMCAqICRlbmdpbmVzLnNpemUKICAg
ICAgICAgCiAgICAgICAgIGZpcnN0ID0gdHJ1ZQotICAgICAgICBzb3J0QnlNb2RlKCRjb21waWxh
dGlvbnMpLmVhY2ggeworCisgICAgICAgIHF1ZXJ5Q29tcGlsYXRpb25zKCJkaXNwbGF5IiwgYXJn
cykgewogICAgICAgICAgICAgfCBjb21waWxhdGlvbiB8Ci0gICAgICAgICAgICBuZXh0IGlmIGhh
c2ggYW5kIG5vdCBjb21waWxhdGlvbi5ieXRlY29kZS5tYXRjaGVzKGhhc2gpCi0gICAgICAgICAg
ICBuZXh0IGlmIGVuZ2luZSBhbmQgY29tcGlsYXRpb24uZW5naW5lICE9IGVuZ2luZQotICAgICAg
ICAgICAgaWYgY29tcGlsYXRpb25JbmRleAotICAgICAgICAgICAgICAgIGlmIGNvbXBpbGF0aW9u
SW5kZXggPCAwCi0gICAgICAgICAgICAgICAgICAgIG5leHQgdW5sZXNzIGNvbXBpbGF0aW9uLmJ5
dGVjb2RlLmNvbXBpbGF0aW9uc1tjb21waWxhdGlvbkluZGV4XSA9PSBjb21waWxhdGlvbgotICAg
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgbmV4dCB1bmxlc3MgY29tcGls
YXRpb24uY29tcGlsYXRpb25JbmRleCA9PSBjb21waWxhdGlvbkluZGV4Ci0gICAgICAgICAgICAg
ICAgZW5kCi0gICAgICAgICAgICBlbmQKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgZmly
c3QKICAgICAgICAgICAgICAgICBmaXJzdCA9IGZhbHNlCg==
</data>
<flag name="review"
          id="246916"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>