<?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>43650</bug_id>
          
          <creation_ts>2010-08-06 15:43:31 -0700</creation_ts>
          <short_desc>Some IDL attributes don&apos;t reflect URL content attributes properly</short_desc>
          <delta_ts>2010-08-28 22:53:11 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</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>http://aryeh.name/tests/reflection.html</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Minor</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>41077</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Aryeh Gregor">ayg</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>ap</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>261533</commentid>
    <comment_count>0</comment_count>
    <who name="Aryeh Gregor">ayg</who>
    <bug_when>2010-08-06 15:43:31 -0700</bug_when>
    <thetext>Version:

Google Chrome	6.0.472.22 (Official Build 54852) dev
WebKit	534.3
V8	2.2.24.8
User Agent	Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.472.22 Safari/534.3
Command Line	 /opt/google/chrome/google-chrome

Minimal test case:

data:text/html,&lt;!doctype html&gt;&lt;script&gt;var el = document.createElement(&quot;iframe&quot;); el.setAttribute(&quot;src&quot;, &quot;&quot;); alert(el.src);&lt;/script&gt;

This alerts an empty string, when it should alert the full current URL, according to HTML5:

http://www.whatwg.org/specs/web-apps/current-work/multipage/urls.html#reflecting-content-attributes-in-idl-attributes

Replace iframe/src by audio/src, base/href, blockquote/cite, embed/src, form/action, ins/cite, source/src, video/src, or video/poster and the same bug occurs.  Replace it by other things, like a/href or img/src, and it does not.  I don&apos;t know why.  This problem occurs in real HTML files too, not just data URLs.

If you replace the &quot;&quot; with &quot;foo&quot;, and switch from data URL to an actual file (I don&apos;t know what &quot;foo&quot; is supposed to resolve to relative to a data URL . . .), it gets weirder.  In a few of the above cases it works correctly -- specifically audio/src, source/src, video/src, video/poster -- but in all other cases it does not.

Safari 5 exhibits a similar problem, but with a somewhat smaller set of attributes: base/href, blockquote/cite, embed/src, form/action, iframe/src, ins/cite.  I&apos;m not sure if it&apos;s the same bug but different versions, or entirely different bugs, but in either case it&apos;s appropriate for here, I guess.

Opera 10.60 exhibits similarly weird behavior in various different cases.  Firefox matches the spec in all cases I tested except form/action, where it&apos;s also wrong when setting to the empty string but right in other cases.  IE8 seems correct per spec in all cases.

(The URL given &lt;http://aryeh.name/tests/reflection.html&gt; is a test suite for IDL reflection that I&apos;m working on right now.  It might not be fully correct yet; I&apos;ll try to isolate and file bugs one by one.  But it&apos;s a quick way to check all elements at once for this particular failure, if you ignore the other failing tests.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261693</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-08-07 01:57:04 -0700</bug_when>
    <thetext>I think this was supposed to be addressed in bug 42087. Do you still see unexpected behavior in more recent builds?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261905</commentid>
    <comment_count>2</comment_count>
    <who name="Aryeh Gregor">ayg</who>
    <bug_when>2010-08-08 10:54:52 -0700</bug_when>
    <thetext>Yes, I still see the same problems with a WebKit nightly as with Safari 5.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261976</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-08-08 22:40:08 -0700</bug_when>
    <thetext>In the case of at least iframe/src and base/href, the bug is that the IDL file says [Reflect] and should say [Reflect,URL]. I am trying to figure out now why the fast/dom/script-tests/URL-attribute-reflection.js test gets this wrong.

Aryeh, my test for this is here: &lt;http://trac.webkit.org/export/64963/trunk/LayoutTests/fast/dom/URL-attribute-reflection.html&gt;. Not sure what I did wrong in the test!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261977</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-08-08 22:41:48 -0700</bug_when>
    <thetext>I see what happened. My test has expected failures! I haven’t fixed them yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261983</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-08-08 23:34:03 -0700</bug_when>
    <thetext>Working on the fix. Mostly done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261985</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-08-08 23:35:12 -0700</bug_when>
    <thetext>The reflection for these attributes is completely ignoring the fact that they are URL and always reflecting the DOM attribute’s value directly. The fix is simply to put [URL] in the IDL files, but that in turn requires fixing the isURLAttribute functions. Relatively simple.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262175</commentid>
    <comment_count>7</comment_count>
      <attachid>63901</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-08-09 09:18:54 -0700</bug_when>
    <thetext>Created attachment 63901
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270887</commentid>
    <comment_count>8</comment_count>
      <attachid>65801</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-08-27 18:50:14 -0700</bug_when>
    <thetext>Created attachment 65801
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271113</commentid>
    <comment_count>9</comment_count>
      <attachid>65801</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-08-28 21:43:45 -0700</bug_when>
    <thetext>Comment on attachment 65801
Patch

My only issue is with the IDL syntax [Reflect,URL]. You seem to leave the space after the comma out everywhere. Is that something we do elsewhere? Otherwise, r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271115</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-08-28 21:44:54 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; My only issue is with the IDL syntax [Reflect,URL]. You seem to leave the space after the comma out everywhere.

Oops, I should add the space. Somehow it never occurred to me!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271122</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-08-28 22:49:38 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/66327</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271123</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-08-28 22:52:24 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/66328</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63901</attachid>
            <date>2010-08-09 09:18:54 -0700</date>
            <delta_ts>2010-08-27 18:50:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43650-20100809091853.patch</filename>
            <type>text/plain</type>
            <size>28153</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NDk4NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzcgQEAKKzIwMTAtMDgtMDkgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNvbWUg
SURMIGF0dHJpYnV0ZXMgZG9uJ3QgcmVmbGVjdCBVUkwgY29udGVudCBhdHRyaWJ1dGVzIHByb3Bl
cmx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzY1
MAorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBOb3Qgc3Vy
ZSB3aHkgWGNvZGUgaW5zaXN0ZWQgb24gZWRpdGluZyB0aGlzLgorCisgICAgICAgICogZG9tL0Rv
Y3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpwcm9jZXNzQmFzZUVsZW1l
bnQpOiBBZGRlZC4gSW1wbGVtZW50cyB0aGUgcnVsZXMgZm9yIGJhc2UgZWxlbWVudHMKKyAgICAg
ICAgZnJvbSB0aGUgSFRNTDUgc3BlY2lmaWNhdGlvbi4gSGFuZGxlcyBtdWx0aXBsZSBiYXNlIGVs
ZW1lbnRzIGluIHRoZSBzYW1lIGRvY3VtZW50LgorCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6
IFJlbW92ZWQgc2V0QmFzZUVsZW1lbnRVUkwgYW5kIHNldEJhc2VFbGVtZW50VGFyZ2V0LCByZXBs
YWNpbmcgdGhlbQorICAgICAgICB3aXRoIHByb2Nlc3NCYXNlRWxlbWVudC4KKworICAgICAgICAq
IGh0bWwvSFRNTEJhc2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxCYXNlRWxl
bWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOiBDYWxsIHRoZSBuZXcgcHJvY2Vzc0Jhc2VFbGVt
ZW50CisgICAgICAgIGZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEJhc2VFbGVtZW50
OjppbnNlcnRlZEludG9Eb2N1bWVudCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEJh
c2VFbGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpIVE1MQmFzZUVsZW1lbnQ6OmlzVVJMQXR0cmlidXRlKTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpIVE1MQmFzZUVsZW1lbnQ6OnRhcmdldCk6IE1vdmVkIGhlcmUgZnJvbSB0aGUgLmggZmls
ZSBhbmQgY2hhbmdlZCB0byBub3QKKyAgICAgICAgcmVhbHkgb24gYSBtX3RhcmdldCBsb2NhbCB2
YXJpYWJsZS4KKworICAgICAgICAqIGh0bWwvSFRNTEJhc2VFbGVtZW50Lmg6IEFkZGVkIGFuIG92
ZXJyaWRlIG9mIHRoZSBpc1VSTEF0dHJpYnV0ZSBmdW5jdGlvbi4gUmVtb3ZlZAorICAgICAgICB1
bm5lZWRlZCBwcm9jZXNzIGZ1bmN0aW9uLiBSZW1vdmVkIGRlY2xhcmF0aW9uIG9mIG5vbmV4aXN0
ZW50IHNldEhyZWYgYW5kIHNldFRhcmdldAorICAgICAgICBmdW5jdGlvbnMuIFJlbW92ZWQgdW5u
ZWVkZWQgbV9ocmVmQXR0clZhbHVlLCBtX2hyZWYsIGFuZCBtX3RhcmdldC4gTW92ZWQKKyAgICAg
ICAgaW1wbGVtZW50YXRpb24gb2YgdGFyZ2V0IGZ1bmN0aW9uIGludG8gdGhlIC5jcHAgZmlsZS4K
KworICAgICAgICAqIGh0bWwvSFRNTEJhc2VFbGVtZW50LmlkbDogTWFya2VkIHRoZSBocmVmIGF0
dHJpYnV0ZSBhcyBVUkwuCisKKyAgICAgICAgKiBodG1sL0hUTUxCbG9ja3F1b3RlRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQmxvY2txdW90ZUVsZW1lbnQ6OmlzVVJMQXR0cmli
dXRlKTogQWRkZWQuCisgICAgICAgICogaHRtbC9IVE1MQmxvY2txdW90ZUVsZW1lbnQuaDogQWRk
ZWQgaXNVUkxBdHRyaWJ1dGUuCisgICAgICAgICogaHRtbC9IVE1MQmxvY2txdW90ZUVsZW1lbnQu
aWRsOiBNYXJrZWQgdGhlIGNpdGUgYXR0cmlidXRlIGFzIFVSTC4KKworICAgICAgICAqIGh0bWwv
SFRNTEVtYmVkRWxlbWVudC5pZGw6IE1hcmtlZCB0aGUgc3JjIGF0dHJpYnV0ZSBhcyBVUkwuCisK
KyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5jcHA6IEFkZGVkIGEgY29tbWVudCBhYm91
dCB0aGUgYWN0aW9uIGZ1bmN0aW9uLCB3aGljaCBzaG91bGQKKyAgICAgICAgYmUgcmVtb3ZlZC4K
KworICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50LmlkbDogTWFya2VkIHRoZSBhY3Rpb24g
YXR0cmlidXRlIGFzIFVSTC4KKworICAgICAgICAqIGh0bWwvSFRNTEh0bWxFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxIdG1sRWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUpOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxIdG1sRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1l
bnQpOiBUd2Vha2VkIGEgYml0LgorICAgICAgICAqIGh0bWwvSFRNTEh0bWxFbGVtZW50Lmg6IEFk
ZGVkIGlzVVJMQXR0cmlidXRlLgorICAgICAgICAqIGh0bWwvSFRNTEh0bWxFbGVtZW50LmlkbDog
TWFya2VkIHRoZSBtYW5pZmVzdCBhdHRyaWJ1dGUgYXMgVVJMLgorCisgICAgICAgICogaHRtbC9I
VE1MSUZyYW1lRWxlbWVudC5pZGw6IE1hcmtlZCB0aGUgc3JjIGF0dHJpYnV0ZSBhIFVSTC4KKwor
ICAgICAgICAqIGh0bWwvSFRNTE1vZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1vZEVsZW1lbnQ6OmlzVVJMQXR0cmlidXRlKTogQWRkZWQuCisgICAgICAgICogaHRtbC9IVE1M
TW9kRWxlbWVudC5oOiBBZGRlZCBpc1VSTEF0dHJpYnV0ZS4KKyAgICAgICAgKiBodG1sL0hUTUxN
b2RFbGVtZW50LmlkbDogTWFya2VkIHRoZSBjaXRlIGF0dHJpYnV0ZSBhcyBVUkwuCisKKyAgICAg
ICAgKiBodG1sL0hUTUxRdW90ZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFF1
b3RlRWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUpOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxR
dW90ZUVsZW1lbnQuaDogQWRkZWQgaXNVUkxBdHRyaWJ1dGUuCisgICAgICAgICogaHRtbC9IVE1M
UXVvdGVFbGVtZW50LmlkbDogTWFya2VkIHRoZSBjaXRlIGF0dHJpYnV0ZSBhcyBVUkwuCisKKyAg
ICAgICAgKiBodG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFZpZXdTb3VyY2VEb2N1bWVudDo6YWRkVmlld1NvdXJjZVRva2VuKTogQ2hhbmdlZCBj
b2RlIHRvIGNyZWF0ZSBhIGJhc2UKKyAgICAgICAgZWxlbWVudCBpbnN0ZWFkIG9mIGNhbGxpbmcg
c2V0QmFzZUVsZW1lbnRVUkwgZGlyZWN0bHkuIFVzZSBBdG9taWNTdHJpbmcgaW5zdGVhZCBvZiBT
dHJpbmcuCisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlld1NvdXJjZURvY3VtZW50OjphZGRTcGFu
V2l0aENsYXNzTmFtZSk6IFVzZSBBdG9taWNTdHJpbmcgaW5zdGVhZCBvZiBTdHJpbmcuCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVmlld1NvdXJjZURvY3VtZW50OjphZGRMaW5lKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpIVE1MVmlld1NvdXJjZURvY3VtZW50OjphZGRUZXh0KTogRGl0dG8u
IEFsc28gcmVuYW1lZCBhIGxvY2FsIHZhcmlhYmxlIHRvIHRleHROb2RlCisgICAgICAgIGluc3Rl
YWQgb2YgdC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWV3U291cmNlRG9jdW1lbnQ6OmFkZEJh
c2UpOiBBZGRlZC4gQ3JlYXRlcyBhIGJhc2UgZWxlbWVudCBhbmQgaW5zZXJ0cyBpdC4KKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxWaWV3U291cmNlRG9jdW1lbnQ6OmFkZExpbmspOiBVc2UgQXRvbWlj
U3RyaW5nIGluc3RlYWQgb2YgU3RyaW5nLgorCisgICAgICAgICogaHRtbC9IVE1MVmlld1NvdXJj
ZURvY3VtZW50Lmg6IFVwZGF0ZWQgZnVuY3Rpb24gZGVjbGFyYXRpb25zIGFzIGFib3ZlLgorCiAy
MDEwLTA4LTA5ICBGcmFuw6dvaXMgU2F1c3NldCAgPHNhdXNzZXRAZ21haWwuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgpJbmRleDogV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDY0ODExKQorKysg
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTIwMDQ1LDcgKzIwMDQ1LDYgQEAKIAkJCWlzYSA9IFBCWFByb2plY3Q7CiAJCQlidWlsZENv
bmZpZ3VyYXRpb25MaXN0ID0gMTQ5QzI4NDMwODkwMkIxMTAwOEE5RUZDIC8qIEJ1aWxkIGNvbmZp
Z3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAiV2ViQ29yZSIgKi87CiAJCQljb21wYXRpYmls
aXR5VmVyc2lvbiA9ICJYY29kZSAyLjQiOwotCQkJZGV2ZWxvcG1lbnRSZWdpb24gPSBFbmdsaXNo
OwogCQkJaGFzU2Nhbm5lZEZvckVuY29kaW5ncyA9IDE7CiAJCQlrbm93blJlZ2lvbnMgPSAoCiAJ
CQkJRW5nbGlzaCwKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDY0ODExKQorKysgV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgsNiArMTM4LDcgQEAKICNpbmNs
dWRlICJYTUxOU05hbWVzLmgiCiAjaW5jbHVkZSAiWE1MTmFtZXMuaCIKICNpbmNsdWRlICJYTUxE
b2N1bWVudFBhcnNlci5oIgorI2luY2x1ZGUgIlhTU0F1ZGl0b3IuaCIKICNpbmNsdWRlICJodG1s
ZWRpdGluZy5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoRnVuY3Rpb25zLmg+CkBAIC0yMTQxLDEyICsyMTQyLDYgQEAgdm9pZCBEb2N1bWVudDo6c2V0
VVJMKGNvbnN0IEtVUkwmIHVybCkKICAgICB1cGRhdGVCYXNlVVJMKCk7CiB9CiAKLXZvaWQgRG9j
dW1lbnQ6OnNldEJhc2VFbGVtZW50VVJMKGNvbnN0IEtVUkwmIGJhc2VFbGVtZW50VVJMKQoteyAK
LSAgICBtX2Jhc2VFbGVtZW50VVJMID0gYmFzZUVsZW1lbnRVUkw7Ci0gICAgdXBkYXRlQmFzZVVS
TCgpOwotfQotCiB2b2lkIERvY3VtZW50Ojp1cGRhdGVCYXNlVVJMKCkKIHsKICAgICAvLyBET00g
MyBDb3JlOiBXaGVuIHRoZSBEb2N1bWVudCBzdXBwb3J0cyB0aGUgZmVhdHVyZSAiSFRNTCIgW0RP
TSBMZXZlbCAyIEhUTUxdLCB0aGUgYmFzZSBVUkkgaXMgY29tcHV0ZWQgdXNpbmcKQEAgLTIxNjcs
NiArMjE2Miw0MyBAQCB2b2lkIERvY3VtZW50Ojp1cGRhdGVCYXNlVVJMKCkKICAgICAgICAgbV9t
YXBwZWRFbGVtZW50U2hlZXQtPnNldEZpbmFsVVJMKG1fYmFzZVVSTCk7CiB9CiAKK3ZvaWQgRG9j
dW1lbnQ6OnByb2Nlc3NCYXNlRWxlbWVudCgpCit7CisgICAgLy8gRmluZCB0aGUgZmlyc3QgaHJl
ZiBhdHRyaWJ1dGUgaW4gYSBiYXNlIGVsZW1lbnQgYW5kIHRoZSBmaXJzdCB0YXJnZXQgYXR0cmli
dXRlIGluIGEgYmFzZSBlbGVtZW50LgorICAgIGNvbnN0IEF0b21pY1N0cmluZyogaHJlZiA9IDA7
CisgICAgY29uc3QgQXRvbWljU3RyaW5nKiB0YXJnZXQgPSAwOworICAgIGZvciAoTm9kZSogbm9k
ZSA9IGRvY3VtZW50KCktPmZpcnN0Q2hpbGQoKTsgbm9kZSAmJiAhaHJlZiAmJiAhdGFyZ2V0OyBu
b2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZSgpKSB7CisgICAgICAgIGlmIChub2RlLT5oYXNU
YWdOYW1lKGJhc2VUYWcpKSB7CisgICAgICAgICAgICBpZiAoIWhyZWYpIHsKKyAgICAgICAgICAg
ICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5v
ZGUpLT5mYXN0R2V0QXR0cmlidXRlKGhyZWZBdHRyKTsKKyAgICAgICAgICAgICAgICBpZiAoIXZh
bHVlLmlzTnVsbCgpKQorICAgICAgICAgICAgICAgICAgICBocmVmID0gJnZhbHVlOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgaWYgKCF0YXJnZXQpIHsKKyAgICAgICAgICAgICAgICBjb25z
dCBBdG9taWNTdHJpbmcmIHZhbHVlID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUpLT5mYXN0
R2V0QXR0cmlidXRlKHRhcmdldEF0dHIpOworICAgICAgICAgICAgICAgIGlmICghdmFsdWUuaXNO
dWxsKCkpCisgICAgICAgICAgICAgICAgICAgIHRhcmdldCA9ICZ2YWx1ZTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEZJWE1FOiBTaW5jZSB0aGlzIGRvZXNuJ3Qg
c2hhcmUgY29kZSB3aXRoIGNvbXBsZXRlVVJMIGl0IG1heSBub3QgaGFuZGxlIGVuY29kaW5ncyBj
b3JyZWN0bHkuCisgICAgS1VSTCBiYXNlRWxlbWVudFVSTDsKKyAgICBpZiAoaHJlZikgeworICAg
ICAgICBTdHJpbmcgc3RyaXBwZWRIcmVmID0gZGVwcmVjYXRlZFBhcnNlVVJMKCpocmVmKTsKKyAg
ICAgICAgaWYgKCFzdHJpcHBlZEhyZWYuaXNFbXB0eSgpICYmICghZnJhbWUoKSB8fCBmcmFtZSgp
LT5zY3JpcHQoKS0+eHNzQXVkaXRvcigpLT5jYW5TZXRCYXNlRWxlbWVudFVSTCgqaHJlZikpKQor
ICAgICAgICAgICAgYmFzZUVsZW1lbnRVUkwgPSBLVVJMKHVybCgpLCBzdHJpcHBlZEhyZWYpOwor
ICAgIH0KKyAgICBpZiAobV9iYXNlRWxlbWVudFVSTCAhPSBiYXNlRWxlbWVudFVSTCkgeworICAg
ICAgICBtX2Jhc2VFbGVtZW50VVJMID0gYmFzZUVsZW1lbnRVUkw7CisgICAgICAgIHVwZGF0ZUJh
c2VVUkwoKTsKKyAgICB9CisKKyAgICBtX2Jhc2VUYXJnZXQgPSB0YXJnZXQgPyAqdGFyZ2V0IDog
bnVsbEF0b207CisKKyAgICAvLyBGSVhNRTogQ2hhbmdpbmcgYSBkb2N1bWVudCdzIGJhc2UgVVJM
IHNob3VsZCBwcm9iYWJseSBhdXRvbWF0aWNhbGx5IHVwZGF0ZSB0aGUgcmVzb2x2ZWQgcmVsYXRp
dmUgVVJMcyBvZiBhbGwgaW1hZ2VzLCBzdHlsZXNoZWV0cywgZXRjLgorfQorCiBTdHJpbmcgRG9j
dW1lbnQ6OnVzZXJBZ2VudChjb25zdCBLVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZy
YW1lKCkgPyBmcmFtZSgpLT5sb2FkZXIoKS0+dXNlckFnZW50KHVybCkgOiBTdHJpbmcoKTsKSW5k
ZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9j
dW1lbnQuaAkocmV2aXNpb24gNjQ4MTEpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NDMsMTIgKzU0Myw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFVSTChj
b25zdCBLVVJMJik7CiAKICAgICBjb25zdCBLVVJMJiBiYXNlVVJMKCkgY29uc3QgeyByZXR1cm4g
bV9iYXNlVVJMOyB9Ci0gICAgLy8gU2V0dGluZyB0aGUgQmFzZUVsZW1lbnRVUkwgd2lsbCBjaGFu
Z2UgdGhlIGJhc2VVUkwuCi0gICAgdm9pZCBzZXRCYXNlRWxlbWVudFVSTChjb25zdCBLVVJMJik7
Ci0KICAgICBjb25zdCBTdHJpbmcmIGJhc2VUYXJnZXQoKSBjb25zdCB7IHJldHVybiBtX2Jhc2VU
YXJnZXQ7IH0KLSAgICAvLyBTZXR0aW5nIHRoZSBCYXNlRWxlbWVudFRhcmdldCB3aWxsIGNoYW5n
ZSB0aGUgYmFzZVRhcmdldC4KLSAgICB2b2lkIHNldEJhc2VFbGVtZW50VGFyZ2V0KGNvbnN0IFN0
cmluZyYgYmFzZVRhcmdldCkgeyBtX2Jhc2VUYXJnZXQgPSBiYXNlVGFyZ2V0OyB9CisgICAgdm9p
ZCBwcm9jZXNzQmFzZUVsZW1lbnQoKTsKIAogICAgIEtVUkwgY29tcGxldGVVUkwoY29uc3QgU3Ry
aW5nJikgY29uc3Q7CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MQmFzZUVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MQmFzZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA2
NDgxMSkKKysrIFdlYkNvcmUvaHRtbC9IVE1MQmFzZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNCwxMSArMjQsOCBAQAogI2luY2x1ZGUgIkhUTUxCYXNlRWxlbWVudC5oIgogCiAjaW5j
bHVkZSAiQXR0cmlidXRlLmgiCi0jaW5jbHVkZSAiQ1NTSGVscGVyLmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKLSNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgotI2lu
Y2x1ZGUgIlhTU0F1ZGl0b3IuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00NSw0NyAr
NDIsMzQgQEAgUGFzc1JlZlB0cjxIVE1MQmFzZUVsZW1lbnQ+IEhUTUxCYXNlRWxlbQogICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgSFRNTEJhc2VFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9
CiAKLXZvaWQgSFRNTEJhc2VFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUq
IGF0dHIpCit2b2lkIEhUTUxCYXNlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmli
dXRlKiBhdHRyaWJ1dGUpCiB7Ci0gICAgaWYgKGF0dHItPm5hbWUoKSA9PSBocmVmQXR0cikgewot
ICAgICAgICBtX2hyZWZBdHRyVmFsdWUgPSBhdHRyLT52YWx1ZSgpOwotICAgICAgICBtX2hyZWYg
PSBkZXByZWNhdGVkUGFyc2VVUkwoYXR0ci0+dmFsdWUoKSk7Ci0gICAgICAgIHByb2Nlc3MoKTsK
LSAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSB0YXJnZXRBdHRyKSB7Ci0gICAgICAgIG1f
dGFyZ2V0ID0gYXR0ci0+dmFsdWUoKTsKLSAgICAgICAgcHJvY2VzcygpOwotICAgIH0gZWxzZQot
ICAgICAgICBIVE1MRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CisgICAgaWYg
KGF0dHJpYnV0ZS0+bmFtZSgpID09IGhyZWZBdHRyIHx8IGF0dHJpYnV0ZS0+bmFtZSgpID09IHRh
cmdldEF0dHIpCisgICAgICAgIGRvY3VtZW50KCktPnByb2Nlc3NCYXNlRWxlbWVudCgpOworICAg
IGVsc2UKKyAgICAgICAgSFRNTEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHJpYnV0
ZSk7CiB9CiAKIHZvaWQgSFRNTEJhc2VFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpCiB7
CiAgICAgSFRNTEVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCk7Ci0gICAgcHJvY2Vzcygp
OworICAgIGRvY3VtZW50KCktPnByb2Nlc3NCYXNlRWxlbWVudCgpOwogfQogCiB2b2lkIEhUTUxC
YXNlRWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudCgpCiB7CiAgICAgSFRNTEVsZW1lbnQ6OnJl
bW92ZWRGcm9tRG9jdW1lbnQoKTsKLQotICAgIC8vIFNpbmNlIHRoZSBkb2N1bWVudCBkb2Vzbid0
IGhhdmUgYSBiYXNlIGVsZW1lbnQsIGNsZWFyIHRoZSBiYXNlIFVSTCBhbmQgdGFyZ2V0LgotICAg
IC8vIEZJWE1FOiBUaGlzIGRvZXMgbm90IGhhbmRsZSB0aGUgY2FzZSBvZiBtdWx0aXBsZSBiYXNl
IGVsZW1lbnRzIGNvcnJlY3RseS4KLSAgICBkb2N1bWVudCgpLT5zZXRCYXNlRWxlbWVudFVSTChL
VVJMKCkpOwotICAgIGRvY3VtZW50KCktPnNldEJhc2VFbGVtZW50VGFyZ2V0KFN0cmluZygpKTsK
KyAgICBkb2N1bWVudCgpLT5wcm9jZXNzQmFzZUVsZW1lbnQoKTsKIH0KIAotdm9pZCBIVE1MQmFz
ZUVsZW1lbnQ6OnByb2Nlc3MoKQorYm9vbCBIVE1MQmFzZUVsZW1lbnQ6OmlzVVJMQXR0cmlidXRl
KEF0dHJpYnV0ZSogYXR0cmlidXRlKSBjb25zdAogewotICAgIGlmICghaW5Eb2N1bWVudCgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIW1faHJlZi5pc0VtcHR5KCkgJiYgKCFkb2N1bWVu
dCgpLT5mcmFtZSgpIHx8IGRvY3VtZW50KCktPmZyYW1lKCktPnNjcmlwdCgpLT54c3NBdWRpdG9y
KCktPmNhblNldEJhc2VFbGVtZW50VVJMKG1faHJlZkF0dHJWYWx1ZSkpKQotICAgICAgICBkb2N1
bWVudCgpLT5zZXRCYXNlRWxlbWVudFVSTChLVVJMKGRvY3VtZW50KCktPnVybCgpLCBtX2hyZWYp
KTsKLQotICAgIGlmICghbV90YXJnZXQuaXNFbXB0eSgpKQotICAgICAgICBkb2N1bWVudCgpLT5z
ZXRCYXNlRWxlbWVudFRhcmdldChtX3RhcmdldCk7CisgICAgcmV0dXJuIGF0dHJpYnV0ZS0+bmFt
ZSgpID09IGhyZWZBdHRyOworfQogCi0gICAgLy8gRklYTUU6IENoYW5naW5nIGEgZG9jdW1lbnQn
cyBiYXNlIFVSTCBzaG91bGQgcHJvYmFibHkgYXV0b21hdGljYWxseSB1cGRhdGUgdGhlIHJlc29s
dmVkIHJlbGF0aXZlIFVSTHMgb2YgYWxsIGltYWdlcywgc3R5bGVzaGVldHMsIGV0Yy4KK1N0cmlu
ZyBIVE1MQmFzZUVsZW1lbnQ6OnRhcmdldCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhc3RHZXRB
dHRyaWJ1dGUodGFyZ2V0QXR0cik7CiB9CiAKIH0KSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MQmFz
ZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEJhc2VFbGVtZW50LmgJ
KHJldmlzaW9uIDY0ODExKQorKysgV2ViQ29yZS9odG1sL0hUTUxCYXNlRWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNiwyMSArMzYsMTEgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgSFRN
TFRhZ1N0YXR1cyBlbmRUYWdSZXF1aXJlbWVudCgpIGNvbnN0IHsgcmV0dXJuIFRhZ1N0YXR1c0Zv
cmJpZGRlbjsgfQogICAgIHZpcnR1YWwgaW50IHRhZ1ByaW9yaXR5KCkgY29uc3QgeyByZXR1cm4g
MDsgfQotCi0gICAgdmlydHVhbCBTdHJpbmcgdGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV90YXJn
ZXQ7IH0KLQorICAgIHZpcnR1YWwgU3RyaW5nIHRhcmdldCgpIGNvbnN0OworICAgIHZpcnR1YWwg
Ym9vbCBpc1VSTEF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQg
cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIGluc2Vy
dGVkSW50b0RvY3VtZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tRG9jdW1lbnQo
KTsKLQotICAgIHZvaWQgcHJvY2VzcygpOwotICAgIAotICAgIHZvaWQgc2V0SHJlZihjb25zdCBT
dHJpbmcmKTsKLSAgICB2b2lkIHNldFRhcmdldChjb25zdCBTdHJpbmcmKTsKLQotICAgIFN0cmlu
ZyBtX2hyZWZBdHRyVmFsdWU7Ci0gICAgU3RyaW5nIG1faHJlZjsKLSAgICBTdHJpbmcgbV90YXJn
ZXQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxCYXNlRWxl
bWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxCYXNlRWxlbWVudC5pZGwJ
KHJldmlzaW9uIDY0ODExKQorKysgV2ViQ29yZS9odG1sL0hUTUxCYXNlRWxlbWVudC5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAy
MDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
NiwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKQEAgLTIwLDcgKzIwLDcgQEAKIG1vZHVsZSBodG1sIHsKIAogICAgIGludGVyZmFj
ZSBIVE1MQmFzZUVsZW1lbnQgOiBIVE1MRWxlbWVudCB7Ci0gICAgICAgIGF0dHJpYnV0ZSBbUmVm
bGVjdF0gRE9NU3RyaW5nIGhyZWY7CisgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdCxVUkxdIERP
TVN0cmluZyBocmVmOwogICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3RdIERPTVN0cmluZyB0YXJn
ZXQ7CiAgICAgfTsKIApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxCbG9ja3F1b3RlRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxCbG9ja3F1b3RlRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDY0ODExKQorKysgV2ViQ29yZS9odG1sL0hUTUxCbG9ja3F1b3RlRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDQgKzQ1LDkgQEAgUGFzc1JlZlB0cjxIVE1MQmxvY2tx
dW90ZUVsZW1lbnQ+IEhUTUxCbAogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTEJsb2NrcXVv
dGVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKK2Jvb2wgSFRNTEJsb2NrcXVvdGVF
bGVtZW50Ojppc1VSTEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHJpYnV0ZSkgY29uc3QKK3sKKyAg
ICByZXR1cm4gYXR0cmlidXRlLT5uYW1lKCkgPT0gY2l0ZUF0dHI7Cit9CisKIH0KSW5kZXg6IFdl
YkNvcmUvaHRtbC9IVE1MQmxvY2txdW90ZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2h0bWwvSFRNTEJsb2NrcXVvdGVFbGVtZW50LmgJKHJldmlzaW9uIDY0ODExKQorKysgV2ViQ29y
ZS9odG1sL0hUTUxCbG9ja3F1b3RlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICsz
Nyw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIEhUTUxUYWdTdGF0dXMgZW5kVGFnUmVxdWly
ZW1lbnQoKSBjb25zdCB7IHJldHVybiBUYWdTdGF0dXNSZXF1aXJlZDsgfQogICAgIHZpcnR1YWwg
aW50IHRhZ1ByaW9yaXR5KCkgY29uc3QgeyByZXR1cm4gNTsgfQorICAgIHZpcnR1YWwgYm9vbCBp
c1VSTEF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBjb25zdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MQmxvY2txdW90ZUVsZW1lbnQuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MQmxvY2txdW90ZUVsZW1lbnQuaWRsCShyZXZpc2lv
biA2NDgxMSkKKysrIFdlYkNvcmUvaHRtbC9IVE1MQmxvY2txdW90ZUVsZW1lbnQuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAw
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYs
IDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
ICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCkBAIC0yMCw3ICsyMCw3IEBACiBtb2R1bGUgaHRtbCB7CiAKICAgICBpbnRlcmZhY2Ug
SFRNTEJsb2NrcXVvdGVFbGVtZW50IDogSFRNTEVsZW1lbnQgewotICAgICAgICBhdHRyaWJ1dGUg
W1JlZmxlY3RdIERPTVN0cmluZyBjaXRlOworICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3QsVVJM
XSBET01TdHJpbmcgY2l0ZTsKICAgICB9OwogCiB9CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEVt
YmVkRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1l
bnQuaWRsCShyZXZpc2lvbiA2NDgxMSkKKysrIFdlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQCBtb2R1bGUgaHRtbCB7CiAgICAg
YXR0cmlidXRlIFtSZWZsZWN0XSBsb25nIGhlaWdodDsKICNlbmRpZgogICAgIGF0dHJpYnV0ZSBb
UmVmbGVjdF0gRE9NU3RyaW5nIG5hbWU7Ci0gICAgYXR0cmlidXRlIFtSZWZsZWN0XSBET01TdHJp
bmcgc3JjOworICAgIGF0dHJpYnV0ZSBbUmVmbGVjdCxVUkxdIERPTVN0cmluZyBzcmM7CiAgICAg
YXR0cmlidXRlIFtSZWZsZWN0XSBET01TdHJpbmcgdHlwZTsKICNpZiBkZWZpbmVkKExBTkdVQUdF
X0pBVkFTQ1JJUFQpICYmIExBTkdVQUdFX0pBVkFTQ1JJUFQKICAgICBhdHRyaWJ1dGUgW1JlZmxl
Y3RdIERPTVN0cmluZyB3aWR0aDsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCShyZXZp
c2lvbiA2NDgxMSkKKysrIFdlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00NDksNiArNDQ5LDkgQEAgYm9vbCBIVE1MRm9ybUVsZW1lbnQ6Om5vVmFsaWRh
dGUoKSBjb25zdAogICAgIHJldHVybiAhZ2V0QXR0cmlidXRlKG5vdmFsaWRhdGVBdHRyKS5pc051
bGwoKTsKIH0KIAorLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIHJlbW92ZWQgYmVj
YXVzZSBpdCBkb2VzIG5vdCBkbyB0aGUgc2FtZSB0aGluZyBhcyB0aGUKKy8vIEphdmFTY3JpcHQg
YmluZGluZyBmb3IgYWN0aW9uLCB3aGljaCB0cmVhdHMgYWN0aW9uIGFzIGEgVVJMIGF0dHJpYnV0
ZS4gTGFzdCB0aW1lIEkKKy8vIChEYXJpbiBBZGxlcikgcmVtb3ZlZCB0aGlzLCBzb21lb25lIGFk
ZGVkIGl0IGJhY2ssIHNvIEkgYW0gbGVhdmluZyBpdCBpbiBmb3Igbm93LgogU3RyaW5nIEhUTUxG
b3JtRWxlbWVudDo6YWN0aW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4gZ2V0QXR0cmlidXRlKGFj
dGlvbkF0dHIpOwpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5pZGwJKHJldmlzaW9uIDY0ODEx
KQorKysgV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTMwLDcgKzMwLDcgQEAgbW9kdWxlIGh0bWwgewogICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3Rd
IERPTVN0cmluZyBuYW1lOwogICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3RdIGJvb2xlYW4gbm9W
YWxpZGF0ZTsKICAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0PWFjY2VwdF9jaGFyc2V0XSBET01T
dHJpbmcgYWNjZXB0Q2hhcnNldDsKLSAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0XSBET01TdHJp
bmcgYWN0aW9uOworICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3QsVVJMXSBET01TdHJpbmcgYWN0
aW9uOwogICAgICAgICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJp
bmcgZW5jb2Rpbmc7ICAvKiBOZXRzY2FwZS9GaXJlZm94IGxlZ2FjeSBhdHRyaWJ1dGUuIFNhbWUg
YXMgZW5jdHlwZS4gKi8KICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmlu
Z10gRE9NU3RyaW5nIGVuY3R5cGU7CiAgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0gRE9NU3Ry
aW5nIG1ldGhvZDsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MSHRtbEVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MSHRtbEVsZW1lbnQuY3BwCShyZXZpc2lvbiA2NDgx
MSkKKysrIFdlYkNvcmUvaHRtbC9IVE1MSHRtbEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01MCw2ICs1MCwxMSBAQCBQYXNzUmVmUHRyPEhUTUxIdG1sRWxlbWVudD4gSFRNTEh0bWxFbGVt
CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MSHRtbEVsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQpKTsKIH0KIAorYm9vbCBIVE1MSHRtbEVsZW1lbnQ6OmlzVVJMQXR0cmlidXRlKEF0dHJpYnV0
ZSogYXR0cmlidXRlKSBjb25zdAoreworICAgIHJldHVybiBhdHRyaWJ1dGUtPm5hbWUoKSA9PSBt
YW5pZmVzdEF0dHI7Cit9CisKIGJvb2wgSFRNTEh0bWxFbGVtZW50OjpjaGVja0RURChjb25zdCBO
b2RlKiBuZXdDaGlsZCkKIHsKICAgICByZXR1cm4gbmV3Q2hpbGQtPmhhc1RhZ05hbWUoaGVhZFRh
ZykgfHwgbmV3Q2hpbGQtPmhhc1RhZ05hbWUoYm9keVRhZykgfHwKQEAgLTc0LDggKzc5LDggQEAg
dm9pZCBIVE1MSHRtbEVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZQogICAgIC8vIENoZWNrIHRo
ZSBtYW5pZmVzdCBhdHRyaWJ1dGUKICAgICAvLyBGSVhNRTogUmV2aXNpdCB0aGlzIHdoZW4gd2Ug
Z2V0IGEgY2xhcmlmaWNhdGlvbiBmcm9tIHdoYXR3ZyBvbiBob3cgdG8gaGFuZGxlIGVtcHR5CiAg
ICAgLy8gbWFuaWZlc3QgYXR0cmlidXRlcy4gQXMgc3BlYydkLCBhbmQgY29kZWQgaGVyZSwgdGhl
IHN5c3RlbSB3aWxsIGluaXRpYXRlIGFuIHVwZGF0ZQotICAgIC8vIHBhc3NpbmcgaW4gdGhlIGRv
Y3VtZW50IHVybCBhcyB0aGUgbWFuaWZlc3QgdXJsLiBUaGF0J3Mgbm90IGEgZ29vZCB0aGluZy4K
LSAgICBBdG9taWNTdHJpbmcgbWFuaWZlc3QgPSBnZXRBdHRyaWJ1dGUobWFuaWZlc3RBdHRyKTsK
KyAgICAvLyBwYXNzaW5nIGluIHRoZSBkb2N1bWVudCBVUkwgYXMgdGhlIG1hbmlmZXN0IFVSTC4g
VGhhdCdzIG5vdCBhIGdvb2QgdGhpbmcuCisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBtYW5pZmVz
dCA9IGdldEF0dHJpYnV0ZShtYW5pZmVzdEF0dHIpOwogICAgIGlmIChtYW5pZmVzdC5pc051bGwo
KSkKICAgICAgICAgZG9jdW1lbnRMb2FkZXItPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCktPnNlbGVj
dENhY2hlV2l0aG91dE1hbmlmZXN0KCk7CiAgICAgZWxzZQpJbmRleDogV2ViQ29yZS9odG1sL0hU
TUxIdG1sRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MSHRtbEVsZW1l
bnQuaAkocmV2aXNpb24gNjQ4MTEpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEh0bWxFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwg
SFRNTFRhZ1N0YXR1cyBlbmRUYWdSZXF1aXJlbWVudCgpIGNvbnN0IHsgcmV0dXJuIFRhZ1N0YXR1
c1JlcXVpcmVkOyB9CiAgICAgdmlydHVhbCBpbnQgdGFnUHJpb3JpdHkoKSBjb25zdCB7IHJldHVy
biAxMTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBjb25z
dDsKICAgICB2aXJ0dWFsIGJvb2wgY2hlY2tEVEQoY29uc3QgTm9kZSogbmV3Q2hpbGQpOwogCiAj
aWYgRU5BQkxFKE9GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykKSW5kZXg6IFdlYkNvcmUvaHRtbC9I
VE1MSHRtbEVsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MSHRtbEVs
ZW1lbnQuaWRsCShyZXZpc2lvbiA2NDgxMSkKKysrIFdlYkNvcmUvaHRtbC9IVE1MSHRtbEVsZW1l
bnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw2ICsyMSw3IEBAIG1vZHVsZSBodG1sIHsKIAog
ICAgIGludGVyZmFjZSBIVE1MSHRtbEVsZW1lbnQgOiBIVE1MRWxlbWVudCB7CiAgICAgICAgIGF0
dHJpYnV0ZSBbUmVmbGVjdF0gRE9NU3RyaW5nIHZlcnNpb247CisgICAgICAgIGF0dHJpYnV0ZSBb
UmVmbGVjdCxVUkxdIERPTVN0cmluZyBtYW5pZmVzdDsKICAgICB9OwogCiB9CkluZGV4OiBXZWJD
b3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRt
bC9IVE1MSUZyYW1lRWxlbWVudC5pZGwJKHJldmlzaW9uIDY0ODExKQorKysgV2ViQ29yZS9odG1s
L0hUTUxJRnJhbWVFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQCBt
b2R1bGUgaHRtbCB7CiAgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0gRE9NU3RyaW5nIG5hbWU7
CiAgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0gRE9NU3RyaW5nIHNhbmRib3g7CiAgICAgICAg
IGF0dHJpYnV0ZSBbUmVmbGVjdF0gRE9NU3RyaW5nIHNjcm9sbGluZzsKLSAgICAgICAgYXR0cmli
dXRlIFtSZWZsZWN0XSBET01TdHJpbmcgc3JjOworICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3Qs
VVJMXSBET01TdHJpbmcgc3JjOwogICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3RdIERPTVN0cmlu
ZyB3aWR0aDsKIAogICAgICAgICAvLyBJbnRyb2R1Y2VkIGluIERPTSBMZXZlbCAyOgpJbmRleDog
V2ViQ29yZS9odG1sL0hUTUxNb2RFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0
bWwvSFRNTE1vZEVsZW1lbnQuY3BwCShyZXZpc2lvbiA2NDgxMSkKKysrIFdlYkNvcmUvaHRtbC9I
VE1MTW9kRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDQgKzM5LDkgQEAgUGFzc1Jl
ZlB0cjxIVE1MTW9kRWxlbWVudD4gSFRNTE1vZEVsZW1lbgogICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgSFRNTE1vZEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAorYm9vbCBIVE1MTW9k
RWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyaWJ1dGUpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGF0dHJpYnV0ZS0+bmFtZSgpID09IGNpdGVBdHRyOworfQorCiB9CkluZGV4OiBX
ZWJDb3JlL2h0bWwvSFRNTE1vZEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwv
SFRNTE1vZEVsZW1lbnQuaAkocmV2aXNpb24gNjQ4MTEpCisrKyBXZWJDb3JlL2h0bWwvSFRNTE1v
ZEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQCBwcml2YXRlOgogCiAg
ICAgdmlydHVhbCBIVE1MVGFnU3RhdHVzIGVuZFRhZ1JlcXVpcmVtZW50KCkgY29uc3QgeyByZXR1
cm4gVGFnU3RhdHVzUmVxdWlyZWQ7IH0KICAgICB2aXJ0dWFsIGludCB0YWdQcmlvcml0eSgpIGNv
bnN0IHsgcmV0dXJuIDE7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoQXR0cmli
dXRlKikgY29uc3Q7CiB9OwogCiB9IC8vbmFtZXNwYWNlCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRN
TE1vZEVsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MTW9kRWxlbWVu
dC5pZGwJKHJldmlzaW9uIDY0ODExKQorKysgV2ViQ29yZS9odG1sL0hUTUxNb2RFbGVtZW50Lmlk
bAkod29ya2luZyBjb3B5KQpAQCAtMjAsNyArMjAsNyBAQAogbW9kdWxlIGh0bWwgewogCiAgICAg
aW50ZXJmYWNlIEhUTUxNb2RFbGVtZW50IDogSFRNTEVsZW1lbnQgewotICAgICAgICBhdHRyaWJ1
dGUgW1JlZmxlY3RdIERPTVN0cmluZyBjaXRlOworICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3Qs
VVJMXSBET01TdHJpbmcgY2l0ZTsKICAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0XSBET01TdHJp
bmcgZGF0ZVRpbWU7CiAgICAgfTsKICAgICAKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MUXVvdGVF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFF1b3RlRWxlbWVudC5j
cHAJKHJldmlzaW9uIDY0ODExKQorKysgV2ViQ29yZS9odG1sL0hUTUxRdW90ZUVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00OCw0ICs0OCw5IEBAIHZvaWQgSFRNTFF1b3RlRWxlbWVudDo6
aW5zZXJ0ZWRJbnRvRG9jdW0KICAgICBIVE1MRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQo
KTsKIH0KIAorYm9vbCBIVE1MUXVvdGVFbGVtZW50Ojppc1VSTEF0dHJpYnV0ZShBdHRyaWJ1dGUq
IGF0dHJpYnV0ZSkgY29uc3QKK3sKKyAgICByZXR1cm4gYXR0cmlidXRlLT5uYW1lKCkgPT0gY2l0
ZUF0dHI7Cit9CisKIH0KSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MUXVvdGVFbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxRdW90ZUVsZW1lbnQuaAkocmV2aXNpb24gNjQ4
MTEpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFF1b3RlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zOCw3ICszOCw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdmlydHVhbCBIVE1MVGFnU3RhdHVz
IGVuZFRhZ1JlcXVpcmVtZW50KCkgY29uc3QgeyByZXR1cm4gVGFnU3RhdHVzUmVxdWlyZWQ7IH0K
ICAgICB2aXJ0dWFsIGludCB0YWdQcmlvcml0eSgpIGNvbnN0IHsgcmV0dXJuIDE7IH0KLQorICAg
IHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBjb25zdDsKICAgICB2aXJ0
dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKIH07CiAKSW5kZXg6IFdlYkNvcmUvaHRt
bC9IVE1MUXVvdGVFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFF1
b3RlRWxlbWVudC5pZGwJKHJldmlzaW9uIDY0ODExKQorKysgV2ViQ29yZS9odG1sL0hUTUxRdW90
ZUVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw2ICsyMCw2IEBACiBtb2R1bGUgaHRt
bCB7CiAKICAgICBpbnRlcmZhY2UgSFRNTFF1b3RlRWxlbWVudCA6IEhUTUxFbGVtZW50IHsKLSAg
ICAgICAgYXR0cmlidXRlIFtSZWZsZWN0XSBET01TdHJpbmcgY2l0ZTsKKyAgICAgICAgYXR0cmli
dXRlIFtSZWZsZWN0LFVSTF0gRE9NU3RyaW5nIGNpdGU7CiAgICAgfTsKIH0KSW5kZXg6IFdlYkNv
cmUvaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2h0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5jcHAJKHJldmlzaW9uIDY0ODExKQorKysgV2Vi
Q29yZS9odG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
OCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiRE9NSW1wbGVt
ZW50YXRpb24uaCIKICNpbmNsdWRlICJIVE1MQW5jaG9yRWxlbWVudC5oIgorI2luY2x1ZGUgIkhU
TUxCYXNlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxCb2R5RWxlbWVudC5oIgogI2luY2x1ZGUg
IkhUTUxEaXZFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEh0bWxFbGVtZW50LmgiCkBAIC0xNTUs
MjAgKzE1NiwxNSBAQCB2b2lkIEhUTUxWaWV3U291cmNlRG9jdW1lbnQ6OmFkZFZpZXdTb3VyCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fY3VycmVudCAhPSBtX3Rib2R5KQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnQgPSBzdGF0aWNfY2FzdDxFbGVt
ZW50Kj4obV9jdXJyZW50LT5wYXJlbnQoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgdmFsdWUgPSBh
dHRyLT52YWx1ZSgpLnN0cmluZygpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgpOwogCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gQ29tcGFyZSBpZ25vcmluZyBjYXNlIHNpbmNlIExlZ2FjeUhUTUxEb2N1
bWVudFBhcnNlciBkb2Vzbid0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG93ZXIg
bmFtZXMgd2hlbiBwYXNzaW5nIGluIHRva2VucyB0bwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIEhUTUxWaWV3U291cmNlRG9jdW1lbnQuCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHRva2VuLT50YWdOYW1lLCAiYmFzZSIpICYmIGVxdWFs
SWdub3JpbmdDYXNlKGF0dHItPm5hbWUoKS5sb2NhbE5hbWUoKSwgImhyZWYiKSkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDYXRjaCB0aGUgaHJlZiBhdHRyaWJ1dGUgaW4g
dGhlIGJhc2UgZWxlbWVudC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSXQg
d2lsbCBiZSB1c2VkIGZvciByZW5kZXJpbmcgYW5jaG9ycyBjcmVhdGVkCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIGJ5IGFkZExpbmsoKSBiZWxvdy4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2V0QmFzZUVsZW1lbnRVUkwoS1VSTCh1cmwoKSwgdmFsdWUpKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBsb3dlciBuYW1lcyB3aGVuIHBhc3NpbmcgaW4gdG9rZW5zIHRvIEhUTUxWaWV3U291
cmNlRG9jdW1lbnQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFhNTCBj
b3VsZCB1c2UgbmFtZXNwYWNlIHByZWZpeGVzIGFuZCBjb25mdXNlIHVzLgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhdHRyLT5uYW1lKCkubG9jYWxO
YW1lKCksICJzcmMiKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShhdHRyLT5uYW1lKCkubG9jYWxOYW1l
KCksICJocmVmIikpCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXF1YWxJZ25v
cmluZ0Nhc2UodG9rZW4tPnRhZ05hbWUsICJiYXNlIikgJiYgZXF1YWxJZ25vcmluZ0Nhc2UoYXR0
ci0+bmFtZSgpLmxvY2FsTmFtZSgpLCAiaHJlZiIpKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX2N1cnJlbnQgPSBhZGRCYXNlKHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhdHRyLT5uYW1lKCkubG9jYWxOYW1l
KCksICJzcmMiKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShhdHRyLT5uYW1lKCkubG9jYWxOYW1lKCks
ICJocmVmIikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudCA9IGFk
ZExpbmsodmFsdWUsIGVxdWFsSWdub3JpbmdDYXNlKHRva2VuLT50YWdOYW1lLCAiYSIpKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fY3VycmVudCA9IGFkZFNwYW5XaXRoQ2xhc3NOYW1lKCJ3ZWJraXQtaHRtbC1hdHRy
aWJ1dGUtdmFsdWUiKTsKQEAgLTIwMyw3ICsxOTksNyBAQCB2b2lkIEhUTUxWaWV3U291cmNlRG9j
dW1lbnQ6OmFkZFZpZXdTb3VyCiAgICAgYWRkVGV4dCh0ZXh0LCAid2Via2l0LWh0bWwtZG9jdHlw
ZSIpOwogfQogCi1QYXNzUmVmUHRyPEVsZW1lbnQ+IEhUTUxWaWV3U291cmNlRG9jdW1lbnQ6OmFk
ZFNwYW5XaXRoQ2xhc3NOYW1lKGNvbnN0IFN0cmluZyYgY2xhc3NOYW1lKQorUGFzc1JlZlB0cjxF
bGVtZW50PiBIVE1MVmlld1NvdXJjZURvY3VtZW50OjphZGRTcGFuV2l0aENsYXNzTmFtZShjb25z
dCBBdG9taWNTdHJpbmcmIGNsYXNzTmFtZSkKIHsKICAgICBpZiAobV9jdXJyZW50ID09IG1fdGJv
ZHkpIHsKICAgICAgICAgYWRkTGluZShjbGFzc05hbWUpOwpAQCAtMjE5LDcgKzIxNSw3IEBAIFBh
c3NSZWZQdHI8RWxlbWVudD4gSFRNTFZpZXdTb3VyY2VEb2N1bWUKICAgICByZXR1cm4gc3Bhbi5y
ZWxlYXNlKCk7CiB9CiAKLXZvaWQgSFRNTFZpZXdTb3VyY2VEb2N1bWVudDo6YWRkTGluZShjb25z
dCBTdHJpbmcmIGNsYXNzTmFtZSkKK3ZvaWQgSFRNTFZpZXdTb3VyY2VEb2N1bWVudDo6YWRkTGlu
ZShjb25zdCBBdG9taWNTdHJpbmcmIGNsYXNzTmFtZSkKIHsKICAgICAvLyBDcmVhdGUgYSB0YWJs
ZSByb3cuCiAgICAgUmVmUHRyPEhUTUxUYWJsZVJvd0VsZW1lbnQ+IHRyb3cgPSBIVE1MVGFibGVS
b3dFbGVtZW50OjpjcmVhdGUodGhpcyk7CkBAIC0yNTcsNyArMjUzLDcgQEAgdm9pZCBIVE1MVmll
d1NvdXJjZURvY3VtZW50OjphZGRMaW5lKGNvbgogICAgIH0KIH0KIAotdm9pZCBIVE1MVmlld1Nv
dXJjZURvY3VtZW50OjphZGRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nJiBj
bGFzc05hbWUpCit2b2lkIEhUTUxWaWV3U291cmNlRG9jdW1lbnQ6OmFkZFRleHQoY29uc3QgU3Ry
aW5nJiB0ZXh0LCBjb25zdCBBdG9taWNTdHJpbmcmIGNsYXNzTmFtZSkKIHsKICAgICBpZiAodGV4
dC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI3NSw5ICsyNzEsOSBAQCB2b2lkIEhU
TUxWaWV3U291cmNlRG9jdW1lbnQ6OmFkZFRleHQoY29uCiAgICAgICAgIH0KICAgICAgICAgaWYg
KG1fY3VycmVudCA9PSBtX3Rib2R5KQogICAgICAgICAgICAgYWRkTGluZShjbGFzc05hbWUpOwot
ICAgICAgICBSZWZQdHI8VGV4dD4gdCA9IFRleHQ6OmNyZWF0ZSh0aGlzLCBzdWJzdHJpbmcpOwot
ICAgICAgICBtX2N1cnJlbnQtPmxlZ2FjeVBhcnNlckFkZENoaWxkKHQpOwotICAgICAgICB0LT5h
dHRhY2goKTsKKyAgICAgICAgUmVmUHRyPFRleHQ+IHRleHROb2RlID0gVGV4dDo6Y3JlYXRlKHRo
aXMsIHN1YnN0cmluZyk7CisgICAgICAgIG1fY3VycmVudC0+bGVnYWN5UGFyc2VyQWRkQ2hpbGQo
dGV4dE5vZGUpOworICAgICAgICB0ZXh0Tm9kZS0+YXR0YWNoKCk7CiAgICAgICAgIGlmIChpIDwg
c2l6ZSAtIDEpCiAgICAgICAgICAgICBtX2N1cnJlbnQgPSBtX3Rib2R5OwogICAgIH0KQEAgLTI4
Nyw3ICsyODMsMTggQEAgdm9pZCBIVE1MVmlld1NvdXJjZURvY3VtZW50OjphZGRUZXh0KGNvbgog
ICAgICAgICBtX2N1cnJlbnQgPSBtX3Rib2R5OwogfQogCi1QYXNzUmVmUHRyPEVsZW1lbnQ+IEhU
TUxWaWV3U291cmNlRG9jdW1lbnQ6OmFkZExpbmsoY29uc3QgU3RyaW5nJiB1cmwsIGJvb2wgaXNB
bmNob3IpCitQYXNzUmVmUHRyPEVsZW1lbnQ+IEhUTUxWaWV3U291cmNlRG9jdW1lbnQ6OmFkZEJh
c2UoY29uc3QgQXRvbWljU3RyaW5nJiBocmVmKQoreworICAgIFJlZlB0cjxIVE1MQmFzZUVsZW1l
bnQ+IGJhc2UgPSBIVE1MQmFzZUVsZW1lbnQ6OmNyZWF0ZShiYXNlVGFnLCB0aGlzKTsKKyAgICBS
ZWZQdHI8TmFtZWROb2RlTWFwPiBhdHRyaWJ1dGVNYXAgPSBOYW1lZE5vZGVNYXA6OmNyZWF0ZSgp
OworICAgIGF0dHJpYnV0ZU1hcC0+YWRkQXR0cmlidXRlKEF0dHJpYnV0ZTo6Y3JlYXRlTWFwcGVk
KGhyZWZBdHRyLCBocmVmKSk7CisgICAgYmFzZS0+c2V0QXR0cmlidXRlTWFwKGF0dHJpYnV0ZU1h
cC5yZWxlYXNlKCkpOworICAgIG1fY3VycmVudC0+bGVnYWN5UGFyc2VyQWRkQ2hpbGQoYmFzZSk7
CisgICAgYmFzZS0+YXR0YWNoKCk7CisgICAgcmV0dXJuIGJhc2UucmVsZWFzZSgpOworfQorCitQ
YXNzUmVmUHRyPEVsZW1lbnQ+IEhUTUxWaWV3U291cmNlRG9jdW1lbnQ6OmFkZExpbmsoY29uc3Qg
QXRvbWljU3RyaW5nJiB1cmwsIGJvb2wgaXNBbmNob3IpCiB7CiAgICAgaWYgKG1fY3VycmVudCA9
PSBtX3Rib2R5KQogICAgICAgICBhZGRMaW5lKCJ3ZWJraXQtaHRtbC10YWciKTsKSW5kZXg6IFdl
YkNvcmUvaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9odG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuaAkocmV2aXNpb24gNjQ4MTEpCisrKyBXZWJD
b3JlL2h0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Mywx
MCArNTMsMTEgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIERvY3VtZW50UGFyc2VyKiBjcmVhdGVQ
YXJzZXIoKTsKIAogICAgIHZvaWQgY3JlYXRlQ29udGFpbmluZ1RhYmxlKCk7Ci0gICAgUGFzc1Jl
ZlB0cjxFbGVtZW50PiBhZGRTcGFuV2l0aENsYXNzTmFtZShjb25zdCBTdHJpbmcmKTsKLSAgICB2
b2lkIGFkZExpbmUoY29uc3QgU3RyaW5nJiBjbGFzc05hbWUpOwotICAgIHZvaWQgYWRkVGV4dChj
b25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYgY2xhc3NOYW1lKTsKLSAgICBQYXNzUmVm
UHRyPEVsZW1lbnQ+IGFkZExpbmsoY29uc3QgU3RyaW5nJiB1cmwsIGJvb2wgaXNBbmNob3IpOwor
ICAgIFBhc3NSZWZQdHI8RWxlbWVudD4gYWRkU3BhbldpdGhDbGFzc05hbWUoY29uc3QgQXRvbWlj
U3RyaW5nJik7CisgICAgdm9pZCBhZGRMaW5lKGNvbnN0IEF0b21pY1N0cmluZyYgY2xhc3NOYW1l
KTsKKyAgICB2b2lkIGFkZFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBBdG9taWNTdHJp
bmcmIGNsYXNzTmFtZSk7CisgICAgUGFzc1JlZlB0cjxFbGVtZW50PiBhZGRMaW5rKGNvbnN0IEF0
b21pY1N0cmluZyYgdXJsLCBib29sIGlzQW5jaG9yKTsKKyAgICBQYXNzUmVmUHRyPEVsZW1lbnQ+
IGFkZEJhc2UoY29uc3QgQXRvbWljU3RyaW5nJiBocmVmKTsKIAogICAgIFN0cmluZyBtX3R5cGU7
CiAgICAgUmVmUHRyPEVsZW1lbnQ+IG1fY3VycmVudDsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDY0OTg1
KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTAtMDgtMDkgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNvbWUgSURMIGF0dHJpYnV0
ZXMgZG9uJ3QgcmVmbGVjdCBVUkwgY29udGVudCBhdHRyaWJ1dGVzIHByb3Blcmx5CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzY1MAorCisgICAgICAg
ICogZmFzdC9kb20vc2NyaXB0LXRlc3RzL1VSTC1hdHRyaWJ1dGUtcmVmbGVjdGlvbi5qczoKKyAg
ICAgICAgKHRlc3RVUkxSZWZsZWN0aW9uKTogRml4ZWQgd3JvbmcgdmFyaWFibGUgbmFtZSBpbiB0
aGUgdGVzdCBzY3JpcHQuCisKKyAgICAgICAgKioqKioqIE5FRUQgVVBEQVRFRCBSRVNVTFRTIEZP
UiBVUkwtYXR0cmlidXRlLXJlZmxlY3Rpb24tZXhwZWN0ZWQudHh0ICoqKioqKgorCisgICAgICAg
ICoqKioqKiBORUVEIE5FVyBURVNUUyBGT1IgPGJhc2U+IEVMRU1FTlQgRklYRVMgKioqKioqKioK
KwogMjAxMC0wOC0wOSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEFuZGVycyBDYXJsc3NvbgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vc2Ny
aXB0LXRlc3RzL1VSTC1hdHRyaWJ1dGUtcmVmbGVjdGlvbi5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9zY3JpcHQtdGVzdHMvVVJMLWF0dHJpYnV0ZS1yZWZsZWN0aW9uLmpz
CShyZXZpc2lvbiA2NDgxMSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3NjcmlwdC10ZXN0cy9V
UkwtYXR0cmlidXRlLXJlZmxlY3Rpb24uanMJKHdvcmtpbmcgY29weSkKQEAgLTI0LDEyICsyNCwx
MiBAQCBmdW5jdGlvbiB0ZXN0VVJMUmVmbGVjdGlvbihhdHRyaWJ1dGVOYW1lCiAgICAgaWYgKHhW
YWx1ZSA9PT0gIngiKQogICAgICAgICByZXR1cm4gIm5vbi1VUkwiOwogICAgIGlmICh4VmFsdWUg
IT09IGRvY3VtZW50LmJhc2VVUkkucmVwbGFjZSgvW15cL10rJC8sICJ4IikpCi0gICAgICAgIHJl
dHVybiAiZXJyb3I6ICIgKyB4VmFsdWU7CisgICAgICAgIHJldHVybiAiZXJyb3IgKHgpOiAiICsg
eFZhbHVlOwogICAgIGlmIChlbXB0eVZhbHVlID09PSAiIikKICAgICAgICAgcmV0dXJuICJub24t
ZW1wdHkgVVJMIjsKICAgICBpZiAoZW1wdHlWYWx1ZSA9PT0gZG9jdW1lbnQuYmFzZVVSSSkKICAg
ICAgICAgcmV0dXJuICJVUkwiOwotICAgIHJldHVybiAiZXJyb3I6ICIgKyB2YWx1ZTsKKyAgICBy
ZXR1cm4gImVycm9yIChlbXB0eSk6ICIgKyBlbXB0eVZhbHVlOwogfQogCiBzaG91bGRCZSgidGVz
dFVSTFJlZmxlY3Rpb24oJ2F0dHJpYnV0ZScsICdlbGVtZW50JykiLCAiJ25vbmUnIik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65801</attachid>
            <date>2010-08-27 18:50:14 -0700</date>
            <delta_ts>2010-08-28 21:43:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43650-20100827185012.patch</filename>
            <type>text/plain</type>
            <size>36055</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NjI4OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzQgQEAKKzIwMTAtMDgtMjYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNvbWUg
SURMIGF0dHJpYnV0ZXMgZG9uJ3QgcmVmbGVjdCBVUkwgY29udGVudCBhdHRyaWJ1dGVzIHByb3Bl
cmx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzY1
MAorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50Ojpwcm9jZXNzQmFzZUVsZW1lbnQpOiBBZGRlZC4gSW1wbGVtZW50cyB0aGUgcnVsZXMgZm9y
IGJhc2UgZWxlbWVudHMKKyAgICAgICAgZnJvbSB0aGUgSFRNTDUgc3BlY2lmaWNhdGlvbi4gSGFu
ZGxlcyBtdWx0aXBsZSBiYXNlIGVsZW1lbnRzIGluIHRoZSBzYW1lIGRvY3VtZW50LgorCisgICAg
ICAgICogZG9tL0RvY3VtZW50Lmg6IFJlbW92ZWQgc2V0QmFzZUVsZW1lbnRVUkwgYW5kIHNldEJh
c2VFbGVtZW50VGFyZ2V0LCByZXBsYWNpbmcgdGhlbQorICAgICAgICB3aXRoIHByb2Nlc3NCYXNl
RWxlbWVudC4KKworICAgICAgICAqIGh0bWwvSFRNTEJhc2VFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxCYXNlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOiBDYWxsIHRo
ZSBuZXcgcHJvY2Vzc0Jhc2VFbGVtZW50CisgICAgICAgIGZ1bmN0aW9uLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEJhc2VFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEJhc2VFbGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MQmFzZUVsZW1lbnQ6OmlzVVJMQXR0cmlidXRlKTog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MQmFzZUVsZW1lbnQ6OnRhcmdldCk6IE1vdmVk
IGhlcmUgZnJvbSB0aGUgLmggZmlsZSBhbmQgY2hhbmdlZCB0byBub3QKKyAgICAgICAgcmVhbHkg
b24gYW4gbV90YXJnZXQgbG9jYWwgdmFyaWFibGUuCisKKyAgICAgICAgKiBodG1sL0hUTUxCYXNl
RWxlbWVudC5oOiBBZGRlZCBhbiBvdmVycmlkZSBvZiB0aGUgaXNVUkxBdHRyaWJ1dGUgZnVuY3Rp
b24uIFJlbW92ZWQKKyAgICAgICAgdW5uZWVkZWQgcHJvY2VzcyBmdW5jdGlvbi4gUmVtb3ZlZCBk
ZWNsYXJhdGlvbiBvZiBub25leGlzdGVudCBzZXRIcmVmIGFuZCBzZXRUYXJnZXQKKyAgICAgICAg
ZnVuY3Rpb25zLiBSZW1vdmVkIHVubmVlZGVkIG1faHJlZkF0dHJWYWx1ZSwgbV9ocmVmLCBhbmQg
bV90YXJnZXQuIE1vdmVkCisgICAgICAgIGltcGxlbWVudGF0aW9uIG9mIHRhcmdldCBmdW5jdGlv
biBpbnRvIHRoZSAuY3BwIGZpbGUuCisKKyAgICAgICAgKiBodG1sL0hUTUxCYXNlRWxlbWVudC5p
ZGw6IE1hcmtlZCB0aGUgaHJlZiBhdHRyaWJ1dGUgYXMgVVJMLgorCisgICAgICAgICogaHRtbC9I
VE1MQmxvY2txdW90ZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEJsb2NrcXVv
dGVFbGVtZW50Ojppc1VSTEF0dHJpYnV0ZSk6IEFkZGVkLgorICAgICAgICAqIGh0bWwvSFRNTEJs
b2NrcXVvdGVFbGVtZW50Lmg6IEFkZGVkIGlzVVJMQXR0cmlidXRlLgorICAgICAgICAqIGh0bWwv
SFRNTEJsb2NrcXVvdGVFbGVtZW50LmlkbDogTWFya2VkIHRoZSBjaXRlIGF0dHJpYnV0ZSBhcyBV
UkwuCisKKyAgICAgICAgKiBodG1sL0hUTUxFbWJlZEVsZW1lbnQuaWRsOiBNYXJrZWQgdGhlIHNy
YyBhdHRyaWJ1dGUgYXMgVVJMLgorCisgICAgICAgICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3Bw
OiBBZGRlZCBhIGNvbW1lbnQgYWJvdXQgdGhlIGFjdGlvbiBmdW5jdGlvbiwgd2hpY2ggc2hvdWxk
CisgICAgICAgIGJlIHJlbW92ZWQuCisKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5p
ZGw6IE1hcmtlZCB0aGUgYWN0aW9uIGF0dHJpYnV0ZSBhcyBVUkwuCisKKyAgICAgICAgKiBodG1s
L0hUTUxIdG1sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSHRtbEVsZW1lbnQ6
OmlzVVJMQXR0cmlidXRlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MSHRtbEVsZW1l
bnQ6Omluc2VydGVkSW50b0RvY3VtZW50KTogVHdlYWtlZCBhIGJpdC4KKyAgICAgICAgKiBodG1s
L0hUTUxIdG1sRWxlbWVudC5oOiBBZGRlZCBpc1VSTEF0dHJpYnV0ZS4KKyAgICAgICAgKiBodG1s
L0hUTUxIdG1sRWxlbWVudC5pZGw6IE1hcmtlZCB0aGUgbWFuaWZlc3QgYXR0cmlidXRlIGFzIFVS
TC4KKworICAgICAgICAqIGh0bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsOiBNYXJrZWQgdGhlIHNy
YyBhdHRyaWJ1dGUgYSBVUkwuCisKKyAgICAgICAgKiBodG1sL0hUTUxNb2RFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNb2RFbGVtZW50Ojppc1VSTEF0dHJpYnV0ZSk6IEFkZGVk
LgorICAgICAgICAqIGh0bWwvSFRNTE1vZEVsZW1lbnQuaDogQWRkZWQgaXNVUkxBdHRyaWJ1dGUu
CisgICAgICAgICogaHRtbC9IVE1MTW9kRWxlbWVudC5pZGw6IE1hcmtlZCB0aGUgY2l0ZSBhdHRy
aWJ1dGUgYXMgVVJMLgorCisgICAgICAgICogaHRtbC9IVE1MUXVvdGVFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxRdW90ZUVsZW1lbnQ6OmlzVVJMQXR0cmlidXRlKTogQWRkZWQu
CisgICAgICAgICogaHRtbC9IVE1MUXVvdGVFbGVtZW50Lmg6IEFkZGVkIGlzVVJMQXR0cmlidXRl
LgorICAgICAgICAqIGh0bWwvSFRNTFF1b3RlRWxlbWVudC5pZGw6IE1hcmtlZCB0aGUgY2l0ZSBh
dHRyaWJ1dGUgYXMgVVJMLgorCisgICAgICAgICogaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWV3U291cmNlRG9jdW1lbnQ6OnByb2Nlc3NU
YWdUb2tlbik6IENoYW5nZWQgY29kZSB0byBjcmVhdGUgYSBiYXNlCisgICAgICAgIGVsZW1lbnQg
aW5zdGVhZCBvZiBjYWxsaW5nIHNldEJhc2VFbGVtZW50VVJMIGRpcmVjdGx5LgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFZpZXdTb3VyY2VEb2N1bWVudDo6YWRkU3BhbldpdGhDbGFzc05hbWUpOiBV
c2UgQXRvbWljU3RyaW5nIGluc3RlYWQgb2YgU3RyaW5nLgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFZpZXdTb3VyY2VEb2N1bWVudDo6YWRkTGluZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFZpZXdTb3VyY2VEb2N1bWVudDo6YWRkVGV4dCk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFZpZXdTb3VyY2VEb2N1bWVudDo6YWRkQmFzZSk6IEFkZGVkLiBDcmVhdGVzIGEgYmFz
ZSBlbGVtZW50IGFuZCBpbnNlcnRzIGl0LgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZXdTb3Vy
Y2VEb2N1bWVudDo6YWRkTGluayk6IFVzZSBBdG9taWNTdHJpbmcgaW5zdGVhZCBvZiBTdHJpbmcu
CisgCisgICAgICAgICogaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50Lmg6IFVwZGF0ZWQgZnVu
Y3Rpb24gZGVjbGFyYXRpb25zIGFzIGFib3ZlLgorCiAyMDEwLTA4LTI2ICBaaGVueWFvIE1vICA8
em1vQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSdXNzZWxsLgpJ
bmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAkocmV2aXNpb24gNjYyODcpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNiw2ICsxMzYsNyBAQAogI2luY2x1ZGUgIlhNTEh0dHBS
ZXF1ZXN0LmgiCiAjaW5jbHVkZSAiWE1MTlNOYW1lcy5oIgogI2luY2x1ZGUgIlhNTE5hbWVzLmgi
CisjaW5jbHVkZSAiWFNTQXVkaXRvci5oIgogI2luY2x1ZGUgImh0bWxlZGl0aW5nLmgiCiAjaW5j
bHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hGdW5jdGlvbnMuaD4K
QEAgLTIxOTYsMTIgKzIxOTcsNiBAQCB2b2lkIERvY3VtZW50OjpzZXRVUkwoY29uc3QgS1VSTCYg
dXJsKQogICAgIHVwZGF0ZUJhc2VVUkwoKTsKIH0KIAotdm9pZCBEb2N1bWVudDo6c2V0QmFzZUVs
ZW1lbnRVUkwoY29uc3QgS1VSTCYgYmFzZUVsZW1lbnRVUkwpCi17IAotICAgIG1fYmFzZUVsZW1l
bnRVUkwgPSBiYXNlRWxlbWVudFVSTDsKLSAgICB1cGRhdGVCYXNlVVJMKCk7Ci19Ci0KIHZvaWQg
RG9jdW1lbnQ6OnVwZGF0ZUJhc2VVUkwoKQogewogICAgIC8vIERPTSAzIENvcmU6IFdoZW4gdGhl
IERvY3VtZW50IHN1cHBvcnRzIHRoZSBmZWF0dXJlICJIVE1MIiBbRE9NIExldmVsIDIgSFRNTF0s
IHRoZSBiYXNlIFVSSSBpcyBjb21wdXRlZCB1c2luZwpAQCAtMjIyMiw2ICsyMjE3LDQxIEBAIHZv
aWQgRG9jdW1lbnQ6OnVwZGF0ZUJhc2VVUkwoKQogICAgICAgICBtX21hcHBlZEVsZW1lbnRTaGVl
dC0+c2V0RmluYWxVUkwobV9iYXNlVVJMKTsKIH0KIAordm9pZCBEb2N1bWVudDo6cHJvY2Vzc0Jh
c2VFbGVtZW50KCkKK3sKKyAgICAvLyBGaW5kIHRoZSBmaXJzdCBocmVmIGF0dHJpYnV0ZSBpbiBh
IGJhc2UgZWxlbWVudCBhbmQgdGhlIGZpcnN0IHRhcmdldCBhdHRyaWJ1dGUgaW4gYSBiYXNlIGVs
ZW1lbnQuCisgICAgY29uc3QgQXRvbWljU3RyaW5nKiBocmVmID0gMDsKKyAgICBjb25zdCBBdG9t
aWNTdHJpbmcqIHRhcmdldCA9IDA7CisgICAgZm9yIChOb2RlKiBub2RlID0gZG9jdW1lbnQoKS0+
Zmlyc3RDaGlsZCgpOyBub2RlICYmICghaHJlZiB8fCAhdGFyZ2V0KTsgbm9kZSA9IG5vZGUtPnRy
YXZlcnNlTmV4dE5vZGUoKSkgeworICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShiYXNlVGFn
KSkgeworICAgICAgICAgICAgaWYgKCFocmVmKSB7CisgICAgICAgICAgICAgICAgY29uc3QgQXRv
bWljU3RyaW5nJiB2YWx1ZSA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKS0+ZmFzdEdldEF0
dHJpYnV0ZShocmVmQXR0cik7CisgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc051bGwoKSkK
KyAgICAgICAgICAgICAgICAgICAgaHJlZiA9ICZ2YWx1ZTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGlmICghdGFyZ2V0KSB7CisgICAgICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5n
JiB2YWx1ZSA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKS0+ZmFzdEdldEF0dHJpYnV0ZSh0
YXJnZXRBdHRyKTsKKyAgICAgICAgICAgICAgICBpZiAoIXZhbHVlLmlzTnVsbCgpKQorICAgICAg
ICAgICAgICAgICAgICB0YXJnZXQgPSAmdmFsdWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9CisKKyAgICAvLyBGSVhNRTogU2luY2UgdGhpcyBkb2Vzbid0IHNoYXJlIGNvZGUgd2l0
aCBjb21wbGV0ZVVSTCBpdCBtYXkgbm90IGhhbmRsZSBlbmNvZGluZ3MgY29ycmVjdGx5LgorICAg
IEtVUkwgYmFzZUVsZW1lbnRVUkw7CisgICAgaWYgKGhyZWYpIHsKKyAgICAgICAgU3RyaW5nIHN0
cmlwcGVkSHJlZiA9IGRlcHJlY2F0ZWRQYXJzZVVSTCgqaHJlZik7CisgICAgICAgIGlmICghc3Ry
aXBwZWRIcmVmLmlzRW1wdHkoKSAmJiAoIWZyYW1lKCkgfHwgZnJhbWUoKS0+c2NyaXB0KCktPnhz
c0F1ZGl0b3IoKS0+Y2FuU2V0QmFzZUVsZW1lbnRVUkwoKmhyZWYpKSkKKyAgICAgICAgICAgIGJh
c2VFbGVtZW50VVJMID0gS1VSTCh1cmwoKSwgc3RyaXBwZWRIcmVmKTsKKyAgICB9CisgICAgaWYg
KG1fYmFzZUVsZW1lbnRVUkwgIT0gYmFzZUVsZW1lbnRVUkwpIHsKKyAgICAgICAgbV9iYXNlRWxl
bWVudFVSTCA9IGJhc2VFbGVtZW50VVJMOworICAgICAgICB1cGRhdGVCYXNlVVJMKCk7CisgICAg
fQorCisgICAgbV9iYXNlVGFyZ2V0ID0gdGFyZ2V0ID8gKnRhcmdldCA6IG51bGxBdG9tOworfQor
CiBTdHJpbmcgRG9jdW1lbnQ6OnVzZXJBZ2VudChjb25zdCBLVVJMJiB1cmwpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIGZyYW1lKCkgPyBmcmFtZSgpLT5sb2FkZXIoKS0+dXNlckFnZW50KHVybCkgOiBT
dHJpbmcoKTsKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24gNjYyODcpCisrKyBXZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NDMsMTIgKzU0Myw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldFVSTChjb25zdCBLVVJMJik7CiAKICAgICBjb25zdCBLVVJMJiBiYXNlVVJMKCkgY29u
c3QgeyByZXR1cm4gbV9iYXNlVVJMOyB9Ci0gICAgLy8gU2V0dGluZyB0aGUgQmFzZUVsZW1lbnRV
Ukwgd2lsbCBjaGFuZ2UgdGhlIGJhc2VVUkwuCi0gICAgdm9pZCBzZXRCYXNlRWxlbWVudFVSTChj
b25zdCBLVVJMJik7Ci0KICAgICBjb25zdCBTdHJpbmcmIGJhc2VUYXJnZXQoKSBjb25zdCB7IHJl
dHVybiBtX2Jhc2VUYXJnZXQ7IH0KLSAgICAvLyBTZXR0aW5nIHRoZSBCYXNlRWxlbWVudFRhcmdl
dCB3aWxsIGNoYW5nZSB0aGUgYmFzZVRhcmdldC4KLSAgICB2b2lkIHNldEJhc2VFbGVtZW50VGFy
Z2V0KGNvbnN0IFN0cmluZyYgYmFzZVRhcmdldCkgeyBtX2Jhc2VUYXJnZXQgPSBiYXNlVGFyZ2V0
OyB9CisgICAgdm9pZCBwcm9jZXNzQmFzZUVsZW1lbnQoKTsKIAogICAgIEtVUkwgY29tcGxldGVV
UkwoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MQmFzZUVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MQmFzZUVsZW1lbnQuY3Bw
CShyZXZpc2lvbiA2NjI4NykKKysrIFdlYkNvcmUvaHRtbC9IVE1MQmFzZUVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNCwxMSArMjQsOCBAQAogI2luY2x1ZGUgIkhUTUxCYXNlRWxlbWVu
dC5oIgogCiAjaW5jbHVkZSAiQXR0cmlidXRlLmgiCi0jaW5jbHVkZSAiQ1NTSGVscGVyLmgiCiAj
aW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkhUTUxO
YW1lcy5oIgotI2luY2x1ZGUgIlhTU0F1ZGl0b3IuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC00NSw0NyArNDIsMzQgQEAgUGFzc1JlZlB0cjxIVE1MQmFzZUVsZW1lbnQ+IEhUTUxCYXNl
RWxlbQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTEJhc2VFbGVtZW50KHRhZ05hbWUsIGRv
Y3VtZW50KSk7CiB9CiAKLXZvaWQgSFRNTEJhc2VFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0
ZShBdHRyaWJ1dGUqIGF0dHIpCit2b2lkIEhUTUxCYXNlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRy
aWJ1dGUoQXR0cmlidXRlKiBhdHRyaWJ1dGUpCiB7Ci0gICAgaWYgKGF0dHItPm5hbWUoKSA9PSBo
cmVmQXR0cikgewotICAgICAgICBtX2hyZWZBdHRyVmFsdWUgPSBhdHRyLT52YWx1ZSgpOwotICAg
ICAgICBtX2hyZWYgPSBkZXByZWNhdGVkUGFyc2VVUkwoYXR0ci0+dmFsdWUoKSk7Ci0gICAgICAg
IHByb2Nlc3MoKTsKLSAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSB0YXJnZXRBdHRyKSB7
Ci0gICAgICAgIG1fdGFyZ2V0ID0gYXR0ci0+dmFsdWUoKTsKLSAgICAgICAgcHJvY2VzcygpOwot
ICAgIH0gZWxzZQotICAgICAgICBIVE1MRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0
cik7CisgICAgaWYgKGF0dHJpYnV0ZS0+bmFtZSgpID09IGhyZWZBdHRyIHx8IGF0dHJpYnV0ZS0+
bmFtZSgpID09IHRhcmdldEF0dHIpCisgICAgICAgIGRvY3VtZW50KCktPnByb2Nlc3NCYXNlRWxl
bWVudCgpOworICAgIGVsc2UKKyAgICAgICAgSFRNTEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmli
dXRlKGF0dHJpYnV0ZSk7CiB9CiAKIHZvaWQgSFRNTEJhc2VFbGVtZW50OjppbnNlcnRlZEludG9E
b2N1bWVudCgpCiB7CiAgICAgSFRNTEVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCk7Ci0g
ICAgcHJvY2VzcygpOworICAgIGRvY3VtZW50KCktPnByb2Nlc3NCYXNlRWxlbWVudCgpOwogfQog
CiB2b2lkIEhUTUxCYXNlRWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudCgpCiB7CiAgICAgSFRN
TEVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKLQotICAgIC8vIFNpbmNlIHRoZSBkb2N1
bWVudCBkb2Vzbid0IGhhdmUgYSBiYXNlIGVsZW1lbnQsIGNsZWFyIHRoZSBiYXNlIFVSTCBhbmQg
dGFyZ2V0LgotICAgIC8vIEZJWE1FOiBUaGlzIGRvZXMgbm90IGhhbmRsZSB0aGUgY2FzZSBvZiBt
dWx0aXBsZSBiYXNlIGVsZW1lbnRzIGNvcnJlY3RseS4KLSAgICBkb2N1bWVudCgpLT5zZXRCYXNl
RWxlbWVudFVSTChLVVJMKCkpOwotICAgIGRvY3VtZW50KCktPnNldEJhc2VFbGVtZW50VGFyZ2V0
KFN0cmluZygpKTsKKyAgICBkb2N1bWVudCgpLT5wcm9jZXNzQmFzZUVsZW1lbnQoKTsKIH0KIAot
dm9pZCBIVE1MQmFzZUVsZW1lbnQ6OnByb2Nlc3MoKQorYm9vbCBIVE1MQmFzZUVsZW1lbnQ6Omlz
VVJMQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cmlidXRlKSBjb25zdAogewotICAgIGlmICghaW5E
b2N1bWVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIW1faHJlZi5pc0VtcHR5KCkg
JiYgKCFkb2N1bWVudCgpLT5mcmFtZSgpIHx8IGRvY3VtZW50KCktPmZyYW1lKCktPnNjcmlwdCgp
LT54c3NBdWRpdG9yKCktPmNhblNldEJhc2VFbGVtZW50VVJMKG1faHJlZkF0dHJWYWx1ZSkpKQot
ICAgICAgICBkb2N1bWVudCgpLT5zZXRCYXNlRWxlbWVudFVSTChLVVJMKGRvY3VtZW50KCktPnVy
bCgpLCBtX2hyZWYpKTsKLQotICAgIGlmICghbV90YXJnZXQuaXNFbXB0eSgpKQotICAgICAgICBk
b2N1bWVudCgpLT5zZXRCYXNlRWxlbWVudFRhcmdldChtX3RhcmdldCk7CisgICAgcmV0dXJuIGF0
dHJpYnV0ZS0+bmFtZSgpID09IGhyZWZBdHRyOworfQogCi0gICAgLy8gRklYTUU6IENoYW5naW5n
IGEgZG9jdW1lbnQncyBiYXNlIFVSTCBzaG91bGQgcHJvYmFibHkgYXV0b21hdGljYWxseSB1cGRh
dGUgdGhlIHJlc29sdmVkIHJlbGF0aXZlIFVSTHMgb2YgYWxsIGltYWdlcywgc3R5bGVzaGVldHMs
IGV0Yy4KK1N0cmluZyBIVE1MQmFzZUVsZW1lbnQ6OnRhcmdldCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIGZhc3RHZXRBdHRyaWJ1dGUodGFyZ2V0QXR0cik7CiB9CiAKIH0KSW5kZXg6IFdlYkNvcmUv
aHRtbC9IVE1MQmFzZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEJh
c2VFbGVtZW50LmgJKHJldmlzaW9uIDY2Mjg3KQorKysgV2ViQ29yZS9odG1sL0hUTUxCYXNlRWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwyMCArMzQsMTEgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBIVE1MQmFzZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7
CiAKLSAgICB2aXJ0dWFsIFN0cmluZyB0YXJnZXQoKSBjb25zdCB7IHJldHVybiBtX3RhcmdldDsg
fQotCisgICAgdmlydHVhbCBTdHJpbmcgdGFyZ2V0KCkgY29uc3Q7CisgICAgdmlydHVhbCBib29s
IGlzVVJMQXR0cmlidXRlKEF0dHJpYnV0ZSopIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBwYXJz
ZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJ
bnRvRG9jdW1lbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb21Eb2N1bWVudCgpOwot
Ci0gICAgdm9pZCBwcm9jZXNzKCk7Ci0gICAgCi0gICAgdm9pZCBzZXRIcmVmKGNvbnN0IFN0cmlu
ZyYpOwotICAgIHZvaWQgc2V0VGFyZ2V0KGNvbnN0IFN0cmluZyYpOwotCi0gICAgU3RyaW5nIG1f
aHJlZkF0dHJWYWx1ZTsKLSAgICBTdHJpbmcgbV9ocmVmOwotICAgIFN0cmluZyBtX3RhcmdldDsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEJhc2VFbGVtZW50
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEJhc2VFbGVtZW50LmlkbAkocmV2
aXNpb24gNjYyODcpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEJhc2VFbGVtZW50LmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAy
MDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwpAQCAtMjAsNyArMjAsNyBAQAogbW9kdWxlIGh0bWwgewogCiAgICAgaW50ZXJmYWNlIEhU
TUxCYXNlRWxlbWVudCA6IEhUTUxFbGVtZW50IHsKLSAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0
XSBET01TdHJpbmcgaHJlZjsKKyAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0LFVSTF0gRE9NU3Ry
aW5nIGhyZWY7CiAgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0gRE9NU3RyaW5nIHRhcmdldDsK
ICAgICB9OwogCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEJsb2NrcXVvdGVFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEJsb2NrcXVvdGVFbGVtZW50LmNwcAkocmV2
aXNpb24gNjYyODcpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEJsb2NrcXVvdGVFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDUsNCArNDUsOSBAQCBQYXNzUmVmUHRyPEhUTUxCbG9ja3F1b3Rl
RWxlbWVudD4gSFRNTEJsCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MQmxvY2txdW90ZUVs
ZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAorYm9vbCBIVE1MQmxvY2txdW90ZUVsZW1l
bnQ6OmlzVVJMQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cmlidXRlKSBjb25zdAoreworICAgIHJl
dHVybiBhdHRyaWJ1dGUtPm5hbWUoKSA9PSBjaXRlQXR0cjsKK30KKwogfQpJbmRleDogV2ViQ29y
ZS9odG1sL0hUTUxCbG9ja3F1b3RlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRt
bC9IVE1MQmxvY2txdW90ZUVsZW1lbnQuaAkocmV2aXNpb24gNjYyODcpCisrKyBXZWJDb3JlL2h0
bWwvSFRNTEJsb2NrcXVvdGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDgg
QEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIEhUTUxCbG9ja3F1b3RlRWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKKworICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJp
YnV0ZShBdHRyaWJ1dGUqKSBjb25zdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFdlYkNvcmUvaHRtbC9IVE1MQmxvY2txdW90ZUVsZW1lbnQuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvaHRtbC9IVE1MQmxvY2txdW90ZUVsZW1lbnQuaWRsCShyZXZpc2lvbiA2NjI4NykK
KysrIFdlYkNvcmUvaHRtbC9IVE1MQmxvY2txdW90ZUVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDksIDIw
MTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBA
IC0yMCw3ICsyMCw3IEBACiBtb2R1bGUgaHRtbCB7CiAKICAgICBpbnRlcmZhY2UgSFRNTEJsb2Nr
cXVvdGVFbGVtZW50IDogSFRNTEVsZW1lbnQgewotICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3Rd
IERPTVN0cmluZyBjaXRlOworICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3QsVVJMXSBET01TdHJp
bmcgY2l0ZTsKICAgICB9OwogCiB9CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVu
dC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuaWRsCShy
ZXZpc2lvbiA2NjI4NykKKysrIFdlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQCBtb2R1bGUgaHRtbCB7CiAgICAgYXR0cmlidXRl
IFtSZWZsZWN0XSBsb25nIGhlaWdodDsKICNlbmRpZgogICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0g
RE9NU3RyaW5nIG5hbWU7Ci0gICAgYXR0cmlidXRlIFtSZWZsZWN0XSBET01TdHJpbmcgc3JjOwor
ICAgIGF0dHJpYnV0ZSBbUmVmbGVjdCxVUkxdIERPTVN0cmluZyBzcmM7CiAgICAgYXR0cmlidXRl
IFtSZWZsZWN0XSBET01TdHJpbmcgdHlwZTsKICNpZiBkZWZpbmVkKExBTkdVQUdFX0pBVkFTQ1JJ
UFQpICYmIExBTkdVQUdFX0pBVkFTQ1JJUFQKICAgICBhdHRyaWJ1dGUgW1JlZmxlY3RdIERPTVN0
cmluZyB3aWR0aDsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCShyZXZpc2lvbiA2NjI4
NykKKysrIFdlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00NDksNiArNDQ5LDkgQEAgYm9vbCBIVE1MRm9ybUVsZW1lbnQ6Om5vVmFsaWRhdGUoKSBjb25z
dAogICAgIHJldHVybiAhZ2V0QXR0cmlidXRlKG5vdmFsaWRhdGVBdHRyKS5pc051bGwoKTsKIH0K
IAorLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIHJlbW92ZWQgYmVjYXVzZSBpdCBk
b2VzIG5vdCBkbyB0aGUgc2FtZSB0aGluZyBhcyB0aGUKKy8vIEphdmFTY3JpcHQgYmluZGluZyBm
b3IgYWN0aW9uLCB3aGljaCB0cmVhdHMgYWN0aW9uIGFzIGEgVVJMIGF0dHJpYnV0ZS4gTGFzdCB0
aW1lIEkKKy8vIChEYXJpbiBBZGxlcikgcmVtb3ZlZCB0aGlzLCBzb21lb25lIGFkZGVkIGl0IGJh
Y2ssIHNvIEkgYW0gbGVhdmluZyBpdCBpbiBmb3Igbm93LgogU3RyaW5nIEhUTUxGb3JtRWxlbWVu
dDo6YWN0aW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4gZ2V0QXR0cmlidXRlKGFjdGlvbkF0dHIp
OwpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5pZGwJKHJldmlzaW9uIDY2Mjg3KQorKysgV2Vi
Q29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMw
LDcgQEAgbW9kdWxlIGh0bWwgewogICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3RdIERPTVN0cmlu
ZyBuYW1lOwogICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3RdIGJvb2xlYW4gbm9WYWxpZGF0ZTsK
ICAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0PWFjY2VwdF9jaGFyc2V0XSBET01TdHJpbmcgYWNj
ZXB0Q2hhcnNldDsKLSAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0XSBET01TdHJpbmcgYWN0aW9u
OworICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3QsVVJMXSBET01TdHJpbmcgYWN0aW9uOwogICAg
ICAgICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgZW5jb2Rp
bmc7ICAvKiBOZXRzY2FwZS9GaXJlZm94IGxlZ2FjeSBhdHRyaWJ1dGUuIFNhbWUgYXMgZW5jdHlw
ZS4gKi8KICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3Ry
aW5nIGVuY3R5cGU7CiAgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0gRE9NU3RyaW5nIG1ldGhv
ZDsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MSHRtbEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvaHRtbC9IVE1MSHRtbEVsZW1lbnQuY3BwCShyZXZpc2lvbiA2NjI4NykKKysrIFdl
YkNvcmUvaHRtbC9IVE1MSHRtbEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1
MCwxMSBAQCBQYXNzUmVmUHRyPEhUTUxIdG1sRWxlbWVudD4gSFRNTEh0bWxFbGVtCiAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBIVE1MSHRtbEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0K
IAorYm9vbCBIVE1MSHRtbEVsZW1lbnQ6OmlzVVJMQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cmli
dXRlKSBjb25zdAoreworICAgIHJldHVybiBhdHRyaWJ1dGUtPm5hbWUoKSA9PSBtYW5pZmVzdEF0
dHI7Cit9CisKICNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQogdm9pZCBIVE1M
SHRtbEVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCkKIHsKQEAgLTY4LDggKzczLDggQEAg
dm9pZCBIVE1MSHRtbEVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZQogICAgIC8vIENoZWNrIHRo
ZSBtYW5pZmVzdCBhdHRyaWJ1dGUKICAgICAvLyBGSVhNRTogUmV2aXNpdCB0aGlzIHdoZW4gd2Ug
Z2V0IGEgY2xhcmlmaWNhdGlvbiBmcm9tIHdoYXR3ZyBvbiBob3cgdG8gaGFuZGxlIGVtcHR5CiAg
ICAgLy8gbWFuaWZlc3QgYXR0cmlidXRlcy4gQXMgc3BlYydkLCBhbmQgY29kZWQgaGVyZSwgdGhl
IHN5c3RlbSB3aWxsIGluaXRpYXRlIGFuIHVwZGF0ZQotICAgIC8vIHBhc3NpbmcgaW4gdGhlIGRv
Y3VtZW50IHVybCBhcyB0aGUgbWFuaWZlc3QgdXJsLiBUaGF0J3Mgbm90IGEgZ29vZCB0aGluZy4K
LSAgICBBdG9taWNTdHJpbmcgbWFuaWZlc3QgPSBnZXRBdHRyaWJ1dGUobWFuaWZlc3RBdHRyKTsK
KyAgICAvLyBwYXNzaW5nIGluIHRoZSBkb2N1bWVudCBVUkwgYXMgdGhlIG1hbmlmZXN0IFVSTC4g
VGhhdCdzIG5vdCBhIGdvb2QgdGhpbmcuCisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBtYW5pZmVz
dCA9IGdldEF0dHJpYnV0ZShtYW5pZmVzdEF0dHIpOwogICAgIGlmIChtYW5pZmVzdC5pc051bGwo
KSkKICAgICAgICAgZG9jdW1lbnRMb2FkZXItPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCktPnNlbGVj
dENhY2hlV2l0aG91dE1hbmlmZXN0KCk7CiAgICAgZWxzZQpJbmRleDogV2ViQ29yZS9odG1sL0hU
TUxIdG1sRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MSHRtbEVsZW1l
bnQuaAkocmV2aXNpb24gNjYyODcpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEh0bWxFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBI
VE1MSHRtbEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKKyAgICB2
aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoQXR0cmlidXRlKikgY29uc3Q7CisKICNpZiBFTkFC
TEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZElu
dG9Eb2N1bWVudCgpOwogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEh0bWxFbGVtZW50
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEh0bWxFbGVtZW50LmlkbAkocmV2
aXNpb24gNjYyODcpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEh0bWxFbGVtZW50LmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMjEsNiArMjEsNyBAQCBtb2R1bGUgaHRtbCB7CiAKICAgICBpbnRlcmZhY2Ug
SFRNTEh0bWxFbGVtZW50IDogSFRNTEVsZW1lbnQgewogICAgICAgICBhdHRyaWJ1dGUgW1JlZmxl
Y3RdIERPTVN0cmluZyB2ZXJzaW9uOworICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3QsVVJMXSBE
T01TdHJpbmcgbWFuaWZlc3Q7CiAgICAgfTsKIAogfQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxJ
RnJhbWVFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVs
ZW1lbnQuaWRsCShyZXZpc2lvbiA2NjI4NykKKysrIFdlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxl
bWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAgbW9kdWxlIGh0bWwgewog
ICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3RdIERPTVN0cmluZyBuYW1lOwogICAgICAgICBhdHRy
aWJ1dGUgW1JlZmxlY3RdIERPTVN0cmluZyBzYW5kYm94OwogICAgICAgICBhdHRyaWJ1dGUgW1Jl
ZmxlY3RdIERPTVN0cmluZyBzY3JvbGxpbmc7Ci0gICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0g
RE9NU3RyaW5nIHNyYzsKKyAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0LFVSTF0gRE9NU3RyaW5n
IHNyYzsKICAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0XSBET01TdHJpbmcgd2lkdGg7CiAKICAg
ICAgICAgLy8gSW50cm9kdWNlZCBpbiBET00gTGV2ZWwgMjoKSW5kZXg6IFdlYkNvcmUvaHRtbC9I
VE1MTW9kRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxNb2RFbGVt
ZW50LmNwcAkocmV2aXNpb24gNjYyODcpCisrKyBXZWJDb3JlL2h0bWwvSFRNTE1vZEVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw0ICszOSw5IEBAIFBhc3NSZWZQdHI8SFRNTE1vZEVs
ZW1lbnQ+IEhUTUxNb2RFbGVtZW4KICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxNb2RFbGVt
ZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKK2Jvb2wgSFRNTE1vZEVsZW1lbnQ6OmlzVVJM
QXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cmlidXRlKSBjb25zdAoreworICAgIHJldHVybiBhdHRy
aWJ1dGUtPm5hbWUoKSA9PSBjaXRlQXR0cjsKK30KKwogfQpJbmRleDogV2ViQ29yZS9odG1sL0hU
TUxNb2RFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxNb2RFbGVtZW50
LmgJKHJldmlzaW9uIDY2Mjg3KQorKysgV2ViQ29yZS9odG1sL0hUTUxNb2RFbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDggQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIEhU
TUxNb2RFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOworCisgICAgdmly
dHVhbCBib29sIGlzVVJMQXR0cmlidXRlKEF0dHJpYnV0ZSopIGNvbnN0OwogfTsKIAogfSAvL25h
bWVzcGFjZQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxNb2RFbGVtZW50LmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTE1vZEVsZW1lbnQuaWRsCShyZXZpc2lvbiA2NjI4NykKKysr
IFdlYkNvcmUvaHRtbC9IVE1MTW9kRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTIwLDcg
KzIwLDcgQEAKIG1vZHVsZSBodG1sIHsKIAogICAgIGludGVyZmFjZSBIVE1MTW9kRWxlbWVudCA6
IEhUTUxFbGVtZW50IHsKLSAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0XSBET01TdHJpbmcgY2l0
ZTsKKyAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0LFVSTF0gRE9NU3RyaW5nIGNpdGU7CiAgICAg
ICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0gRE9NU3RyaW5nIGRhdGVUaW1lOwogICAgIH07CiAgICAg
CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFF1b3RlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9odG1sL0hUTUxRdW90ZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA2NjI4NykKKysrIFdl
YkNvcmUvaHRtbC9IVE1MUXVvdGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNCAr
NDgsOSBAQCB2b2lkIEhUTUxRdW90ZUVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtCiAgICAgSFRN
TEVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCk7CiB9CiAKK2Jvb2wgSFRNTFF1b3RlRWxl
bWVudDo6aXNVUkxBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyaWJ1dGUpIGNvbnN0Cit7CisgICAg
cmV0dXJuIGF0dHJpYnV0ZS0+bmFtZSgpID09IGNpdGVBdHRyOworfQorCiB9CkluZGV4OiBXZWJD
b3JlL2h0bWwvSFRNTFF1b3RlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9I
VE1MUXVvdGVFbGVtZW50LmgJKHJldmlzaW9uIDY2Mjg3KQorKysgV2ViQ29yZS9odG1sL0hUTUxR
dW90ZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQCBwcml2YXRlOgog
ICAgIEhUTUxRdW90ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAg
ICAgCiAgICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50KCk7CisgICAgdmlydHVh
bCBib29sIGlzVVJMQXR0cmlidXRlKEF0dHJpYnV0ZSopIGNvbnN0OwogfTsKIAogfSAvL25hbWVz
cGFjZQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxRdW90ZUVsZW1lbnQuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvaHRtbC9IVE1MUXVvdGVFbGVtZW50LmlkbAkocmV2aXNpb24gNjYyODcpCisr
KyBXZWJDb3JlL2h0bWwvSFRNTFF1b3RlRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTIw
LDYgKzIwLDYgQEAKIG1vZHVsZSBodG1sIHsKIAogICAgIGludGVyZmFjZSBIVE1MUXVvdGVFbGVt
ZW50IDogSFRNTEVsZW1lbnQgewotICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3RdIERPTVN0cmlu
ZyBjaXRlOworICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3QsVVJMXSBET01TdHJpbmcgY2l0ZTsK
ICAgICB9OwogfQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmNwcAko
cmV2aXNpb24gNjYyODcpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJBdHRyaWJ1dGUu
aCIKICNpbmNsdWRlICJET01JbXBsZW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxBbmNob3JF
bGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTEJhc2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEJv
ZHlFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTERpdkVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
SHRtbEVsZW1lbnQuaCIKQEAgLTE0MCw4ICsxNDEsNyBAQCB2b2lkIEhUTUxWaWV3U291cmNlRG9j
dW1lbnQ6OnByb2Nlc3NEb2N0CiAKIHZvaWQgSFRNTFZpZXdTb3VyY2VEb2N1bWVudDo6cHJvY2Vz
c1RhZ1Rva2VuKGNvbnN0IFN0cmluZyYgc291cmNlLCBIVE1MVG9rZW4mIHRva2VuKQogewotICAg
IFN0cmluZyBjbGFzc05hbWVTdHIgPSAid2Via2l0LWh0bWwtdGFnIjsKLSAgICBtX2N1cnJlbnQg
PSBhZGRTcGFuV2l0aENsYXNzTmFtZShjbGFzc05hbWVTdHIpOworICAgIG1fY3VycmVudCA9IGFk
ZFNwYW5XaXRoQ2xhc3NOYW1lKCJ3ZWJraXQtaHRtbC10YWciKTsKIAogICAgIEF0b21pY1N0cmlu
ZyB0YWdOYW1lKHRva2VuLm5hbWUoKS5kYXRhKCksIHRva2VuLm5hbWUoKS5zaXplKCkpOwogCkBA
IC0xNjEsMTEgKzE2MSw4IEBAIHZvaWQgSFRNTFZpZXdTb3VyY2VEb2N1bWVudDo6cHJvY2Vzc1Rh
Z1QKICAgICAgICAgaW5kZXggPSBhZGRSYW5nZShzb3VyY2UsIGluZGV4LCBpdGVyLT5tX25hbWVS
YW5nZS5tX3N0YXJ0IC0gdG9rZW4uc3RhcnRJbmRleCgpLCAiIik7CiAgICAgICAgIGluZGV4ID0g
YWRkUmFuZ2Uoc291cmNlLCBpbmRleCwgaXRlci0+bV9uYW1lUmFuZ2UubV9lbmQgLSB0b2tlbi5z
dGFydEluZGV4KCksICJ3ZWJraXQtaHRtbC1hdHRyaWJ1dGUtbmFtZSIpOwogCi0gICAgICAgIGlm
ICh0YWdOYW1lID09IGJhc2VUYWcgJiYgbmFtZSA9PSBocmVmQXR0cikgewotICAgICAgICAgICAg
Ly8gQ2F0Y2ggdGhlIGhyZWYgYXR0cmlidXRlIGluIHRoZSBiYXNlIGVsZW1lbnQuIEl0IHdpbGwg
YmUgdXNlZAotICAgICAgICAgICAgLy8gZm9yIHJlbmRlcmluZyBhbmNob3JzIGNyZWF0ZWQgYnkg
YWRkTGluaygpIGJlbG93LgotICAgICAgICAgICAgc2V0QmFzZUVsZW1lbnRVUkwoS1VSTCh1cmwo
KSwgdmFsdWUpKTsKLSAgICAgICAgfQorICAgICAgICBpZiAodGFnTmFtZSA9PSBiYXNlVGFnICYm
IG5hbWUgPT0gaHJlZkF0dHIpCisgICAgICAgICAgICBtX2N1cnJlbnQgPSBhZGRCYXNlKHZhbHVl
KTsKIAogICAgICAgICBpbmRleCA9IGFkZFJhbmdlKHNvdXJjZSwgaW5kZXgsIGl0ZXItPm1fdmFs
dWVSYW5nZS5tX3N0YXJ0IC0gdG9rZW4uc3RhcnRJbmRleCgpLCAiIik7CiAKQEAgLTE4OSw3ICsx
ODYsNyBAQCB2b2lkIEhUTUxWaWV3U291cmNlRG9jdW1lbnQ6OnByb2Nlc3NDaGFyCiAgICAgYWRk
VGV4dChzb3VyY2UsICIiKTsKIH0KIAotUGFzc1JlZlB0cjxFbGVtZW50PiBIVE1MVmlld1NvdXJj
ZURvY3VtZW50OjphZGRTcGFuV2l0aENsYXNzTmFtZShjb25zdCBTdHJpbmcmIGNsYXNzTmFtZSkK
K1Bhc3NSZWZQdHI8RWxlbWVudD4gSFRNTFZpZXdTb3VyY2VEb2N1bWVudDo6YWRkU3BhbldpdGhD
bGFzc05hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBjbGFzc05hbWUpCiB7CiAgICAgaWYgKG1fY3Vy
cmVudCA9PSBtX3Rib2R5KSB7CiAgICAgICAgIGFkZExpbmUoY2xhc3NOYW1lKTsKQEAgLTIwNSw3
ICsyMDIsNyBAQCBQYXNzUmVmUHRyPEVsZW1lbnQ+IEhUTUxWaWV3U291cmNlRG9jdW1lCiAgICAg
cmV0dXJuIHNwYW4ucmVsZWFzZSgpOwogfQogCi12b2lkIEhUTUxWaWV3U291cmNlRG9jdW1lbnQ6
OmFkZExpbmUoY29uc3QgU3RyaW5nJiBjbGFzc05hbWUpCit2b2lkIEhUTUxWaWV3U291cmNlRG9j
dW1lbnQ6OmFkZExpbmUoY29uc3QgQXRvbWljU3RyaW5nJiBjbGFzc05hbWUpCiB7CiAgICAgLy8g
Q3JlYXRlIGEgdGFibGUgcm93LgogICAgIFJlZlB0cjxIVE1MVGFibGVSb3dFbGVtZW50PiB0cm93
ID0gSFRNTFRhYmxlUm93RWxlbWVudDo6Y3JlYXRlKHRoaXMpOwpAQCAtMjQzLDcgKzI0MCw3IEBA
IHZvaWQgSFRNTFZpZXdTb3VyY2VEb2N1bWVudDo6YWRkTGluZShjb24KICAgICB9CiB9CiAKLXZv
aWQgSFRNTFZpZXdTb3VyY2VEb2N1bWVudDo6YWRkVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGNv
bnN0IFN0cmluZyYgY2xhc3NOYW1lKQordm9pZCBIVE1MVmlld1NvdXJjZURvY3VtZW50OjphZGRU
ZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgQXRvbWljU3RyaW5nJiBjbGFzc05hbWUpCiB7
CiAgICAgaWYgKHRleHQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CkBAIC0yOTIsNyArMjg5
LDE4IEBAIGludCBIVE1MVmlld1NvdXJjZURvY3VtZW50OjphZGRSYW5nZShjb24KICAgICByZXR1
cm4gZW5kOwogfQogCi1QYXNzUmVmUHRyPEVsZW1lbnQ+IEhUTUxWaWV3U291cmNlRG9jdW1lbnQ6
OmFkZExpbmsoY29uc3QgU3RyaW5nJiB1cmwsIGJvb2wgaXNBbmNob3IpCitQYXNzUmVmUHRyPEVs
ZW1lbnQ+IEhUTUxWaWV3U291cmNlRG9jdW1lbnQ6OmFkZEJhc2UoY29uc3QgQXRvbWljU3RyaW5n
JiBocmVmKQoreworICAgIFJlZlB0cjxIVE1MQmFzZUVsZW1lbnQ+IGJhc2UgPSBIVE1MQmFzZUVs
ZW1lbnQ6OmNyZWF0ZShiYXNlVGFnLCB0aGlzKTsKKyAgICBSZWZQdHI8TmFtZWROb2RlTWFwPiBh
dHRyaWJ1dGVNYXAgPSBOYW1lZE5vZGVNYXA6OmNyZWF0ZSgpOworICAgIGF0dHJpYnV0ZU1hcC0+
YWRkQXR0cmlidXRlKEF0dHJpYnV0ZTo6Y3JlYXRlTWFwcGVkKGhyZWZBdHRyLCBocmVmKSk7Cisg
ICAgYmFzZS0+c2V0QXR0cmlidXRlTWFwKGF0dHJpYnV0ZU1hcC5yZWxlYXNlKCkpOworICAgIG1f
Y3VycmVudC0+cGFyc2VyQWRkQ2hpbGQoYmFzZSk7CisgICAgYmFzZS0+YXR0YWNoKCk7CisgICAg
cmV0dXJuIGJhc2UucmVsZWFzZSgpOworfQorCitQYXNzUmVmUHRyPEVsZW1lbnQ+IEhUTUxWaWV3
U291cmNlRG9jdW1lbnQ6OmFkZExpbmsoY29uc3QgQXRvbWljU3RyaW5nJiB1cmwsIGJvb2wgaXNB
bmNob3IpCiB7CiAgICAgaWYgKG1fY3VycmVudCA9PSBtX3Rib2R5KQogICAgICAgICBhZGRMaW5l
KCJ3ZWJraXQtaHRtbC10YWciKTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MVmlld1NvdXJjZURv
Y3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxWaWV3U291cmNlRG9jdW1l
bnQuaAkocmV2aXNpb24gNjYyODcpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFZpZXdTb3VyY2VEb2N1
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NywxMSArNTcsMTIgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHByb2Nlc3NDaGFyYWN0ZXJUb2tlbihjb25zdCBTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2Vu
Jik7CiAKICAgICB2b2lkIGNyZWF0ZUNvbnRhaW5pbmdUYWJsZSgpOwotICAgIFBhc3NSZWZQdHI8
RWxlbWVudD4gYWRkU3BhbldpdGhDbGFzc05hbWUoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBh
ZGRMaW5lKGNvbnN0IFN0cmluZyYgY2xhc3NOYW1lKTsKLSAgICB2b2lkIGFkZFRleHQoY29uc3Qg
U3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcmIGNsYXNzTmFtZSk7CisgICAgUGFzc1JlZlB0cjxF
bGVtZW50PiBhZGRTcGFuV2l0aENsYXNzTmFtZShjb25zdCBBdG9taWNTdHJpbmcmKTsKKyAgICB2
b2lkIGFkZExpbmUoY29uc3QgQXRvbWljU3RyaW5nJiBjbGFzc05hbWUpOworICAgIHZvaWQgYWRk
VGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEF0b21pY1N0cmluZyYgY2xhc3NOYW1lKTsK
ICAgICBpbnQgYWRkUmFuZ2UoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGludCBzdGFydCwgaW50IGVu
ZCwgY29uc3QgU3RyaW5nJiBjbGFzc05hbWUsIGJvb2wgaXNMaW5rID0gZmFsc2UsIGJvb2wgaXNB
bmNob3IgPSBmYWxzZSk7Ci0gICAgUGFzc1JlZlB0cjxFbGVtZW50PiBhZGRMaW5rKGNvbnN0IFN0
cmluZyYgdXJsLCBib29sIGlzQW5jaG9yKTsKKyAgICBQYXNzUmVmUHRyPEVsZW1lbnQ+IGFkZExp
bmsoY29uc3QgQXRvbWljU3RyaW5nJiB1cmwsIGJvb2wgaXNBbmNob3IpOworICAgIFBhc3NSZWZQ
dHI8RWxlbWVudD4gYWRkQmFzZShjb25zdCBBdG9taWNTdHJpbmcmIGhyZWYpOwogCiAgICAgU3Ry
aW5nIG1fdHlwZTsKICAgICBSZWZQdHI8RWxlbWVudD4gbV9jdXJyZW50OwpJbmRleDogTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2
aXNpb24gNjYyODkpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwzMiBAQAorMjAxMC0wOC0yNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU29tZSBJ
REwgYXR0cmlidXRlcyBkb24ndCByZWZsZWN0IFVSTCBjb250ZW50IGF0dHJpYnV0ZXMgcHJvcGVy
bHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzNjUw
CisKKyAgICAgICAgKiBkb20vaHRtbC9sZXZlbDIvaHRtbC9idXR0b24wMy5qczogQWRkZWQgYSAi
V2ViS2l0IG1vZGlmaWNhdGlvbiIgc2VjdGlvbiBzbyB0aGlzCisgICAgICAgIGNvcnJlY3RseSBl
eHBlY3RzIHRoZSBhY3Rpb24gYXR0cmlidXRlIHRvIHJldHVybiBhIGNvbXBsZXRlZCBVUkwuCisg
ICAgICAgICogZG9tL3hodG1sL2xldmVsMi9odG1sL2J1dHRvbjAzLmpzOiBEaXR0by4KKworICAg
ICAgICAqIGZhc3QvZG9tL1VSTC1hdHRyaWJ1dGUtcmVmbGVjdGlvbi1leHBlY3RlZC50eHQ6IFVw
ZGFlZCBleHBlY3RlZCByZXN1bHRzIHRvIGV4cGVjdGUKKyAgICAgICAgbW9yZSBzdWNjZXNzZXMu
CisKKyAgICAgICAgKiBmYXN0L2RvbS9zY3JpcHQtdGVzdHMvVVJMLWF0dHJpYnV0ZS1yZWZsZWN0
aW9uLmpzOgorICAgICAgICAodGVzdFVSTFJlZmxlY3Rpb24pOiBGaXhlZCB3cm9uZyB2YXJpYWJs
ZSBuYW1lIGluIHRoZSB0ZXN0IHNjcmlwdC4KKworICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJp
dHkveHNzQXVkaXRvci9mdWxsLWJsb2NrLWlmcmFtZS1uby1pbmhlcml0LnBocDogUmVtb3ZlZCBh
IGNhbGwKKyAgICAgICAgdG8gZW5jb2RlVVJJIHRoYXQgd2FzIG5lZWRlZCB0byB3b3JrIGFyb3Vu
ZCBvdXIgaW5jb3JyZWN0IGltcGxlbWVudGF0aW9uIG9mCisgICAgICAgIEhUTUxJRnJhbWVFbGVt
ZW50J3Mgc3JjIGF0dHJpYnV0ZS4KKworICAgICAgICAqIGZhc3QvZG9tL0hUTUxCYXNlRWxlbWVu
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTEJhc2VFbGVtZW50L211bHRpcGxlLWJh
c2UtZWxlbWVudHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1M
QmFzZUVsZW1lbnQvbXVsdGlwbGUtYmFzZS1lbGVtZW50cy5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2RvbS9IVE1MQmFzZUVsZW1lbnQvc2NyaXB0LXRlc3RzOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2RvbS9IVE1MQmFzZUVsZW1lbnQvc2NyaXB0LXRlc3RzL1RFTVBMQVRFLmh0bWw6Cisg
ICAgICAgIENvcGllZCBmcm9tIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NjcmlwdC10ZXN0
cy9URU1QTEFURS5odG1sLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxCYXNlRWxlbWVudC9zY3Jp
cHQtdGVzdHMvbXVsdGlwbGUtYmFzZS1lbGVtZW50cy5qczogQWRkZWQuCisKIDIwMTAtMDgtMjcg
IEpvbiBIb25leWN1dHQgIDxqaG9uZXljdXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgdGVz
dHMgdG8gdGhlIFdlYktpdDIgc2tpcHBlZCBsaXN0LgpAQCAtNDc1OTMsMyArNDc2MjIsNCBAQAog
ICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvc3R5bGVkLWVsZW1lbnQt
bWFya3VwLWV4cGVjdGVkLmNoZWNrc3VtOiBSZXBsYWNlZC4KICAgICAgICAgKiBwbGF0Zm9ybS9t
YWMvZWRpdGluZy9wYXN0ZWJvYXJkL3N0eWxlZC1lbGVtZW50LW1hcmt1cC1leHBlY3RlZC5wbmc6
IFJlcGxhY2VkLgogICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvc3Vi
ZnJhbWUtZHJhZ25kcm9wLTEtZXhwZWN0ZWQuY2hlCitzdm4KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDIvaHRtbC9idXR0b24wMy5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDIvaHRtbC9idXR0b24w
My5qcwkocmV2aXNpb24gNjYyODcpCisrKyBMYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDIvaHRt
bC9idXR0b24wMy5qcwkod29ya2luZyBjb3B5KQpAQCAtMTAzLDcgKzEwMywxMSBAQCB0ZXN0Tm9k
ZSA9IG5vZGVMaXN0Lml0ZW0oMCk7CiAKICAgICAgIHZmYWN0aW9uID0gZm9ybU5vZGUuYWN0aW9u
OwogCi0gICAgICBhc3NlcnRFcXVhbHMoImZvcm1MaW5rIiwiLi4uIix2ZmFjdGlvbik7CisvLyAg
V2ViS2l0IG1vZGlmaWNhdGlvbjogMjYtQXVndXN0LTIwMTAKKyAgICAgIHZhciBleHBlY3RlZEFj
dGlvbiA9IGRvY3VtZW50LlVSTC5yZXBsYWNlKC9bXi9dKiQvLCAiIikgKyAiLi4uIjsKKy8vICBF
bmQgV2ViS2l0IG1vZGlmaWNhdGlvbgorCisgICAgICBhc3NlcnRFcXVhbHMoImZvcm1MaW5rIixl
eHBlY3RlZEFjdGlvbix2ZmFjdGlvbik7CiAgICAgICAgCiB9CiAKSW5kZXg6IExheW91dFRlc3Rz
L2RvbS94aHRtbC9sZXZlbDIvaHRtbC9idXR0b24wMy5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9kb20veGh0bWwvbGV2ZWwyL2h0bWwvYnV0dG9uMDMuanMJKHJldmlzaW9uIDY2Mjg3KQor
KysgTGF5b3V0VGVzdHMvZG9tL3hodG1sL2xldmVsMi9odG1sL2J1dHRvbjAzLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDMsNyArMTAzLDExIEBAIHRlc3ROb2RlID0gbm9kZUxpc3QuaXRlbSgwKTsK
IAogICAgICAgdmZhY3Rpb24gPSBmb3JtTm9kZS5hY3Rpb247CiAKLSAgICAgIGFzc2VydEVxdWFs
cygiZm9ybUxpbmsiLCIuLi4iLHZmYWN0aW9uKTsKKy8vICBXZWJLaXQgbW9kaWZpY2F0aW9uOiAy
Ni1BdWd1c3QtMjAxMAorICAgICAgdmFyIGV4cGVjdGVkQWN0aW9uID0gZG9jdW1lbnQuVVJMLnJl
cGxhY2UoL1teL10qJC8sICIiKSArICIuLi4iOworLy8gIEVuZCBXZWJLaXQgbW9kaWZpY2F0aW9u
CisKKyAgICAgIGFzc2VydEVxdWFscygiZm9ybUxpbmsiLGV4cGVjdGVkQWN0aW9uLHZmYWN0aW9u
KTsKICAgICAgICAKIH0KIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vVVJMLWF0dHJpYnV0
ZS1yZWZsZWN0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9VUkwtYXR0cmlidXRlLXJlZmxlY3Rpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA2NjI4
NykKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL1VSTC1hdHRyaWJ1dGUtcmVmbGVjdGlvbi1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUsMjQgKzUsMjQgQEAgT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQQogCiBQQVNTIHRlc3RVUkxSZWZsZWN0aW9uKCdhdHRy
aWJ1dGUnLCAnZWxlbWVudCcpIGlzICdub25lJwogUEFTUyB0ZXN0VVJMUmVmbGVjdGlvbignaWQn
LCAnZWxlbWVudCcpIGlzICdub24tVVJMJwotRkFJTCB0ZXN0VVJMUmVmbGVjdGlvbignYWN0aW9u
JywgJ2Zvcm0nKSBzaG91bGQgYmUgVVJMLiBXYXMgbm9uLVVSTC4KLUZBSUwgdGVzdFVSTFJlZmxl
Y3Rpb24oJ2NpdGUnLCAnYmxvY2txdW90ZScpIHNob3VsZCBiZSBVUkwuIFdhcyBub24tVVJMLgot
RkFJTCB0ZXN0VVJMUmVmbGVjdGlvbignY2l0ZScsICdkZWwnKSBzaG91bGQgYmUgVVJMLiBXYXMg
bm9uLVVSTC4KLUZBSUwgdGVzdFVSTFJlZmxlY3Rpb24oJ2NpdGUnLCAnaW5zJykgc2hvdWxkIGJl
IFVSTC4gV2FzIG5vbi1VUkwuCi1GQUlMIHRlc3RVUkxSZWZsZWN0aW9uKCdjaXRlJywgJ3EnKSBz
aG91bGQgYmUgVVJMLiBXYXMgbm9uLVVSTC4KK1BBU1MgdGVzdFVSTFJlZmxlY3Rpb24oJ2FjdGlv
bicsICdmb3JtJykgaXMgJ1VSTCcKK1BBU1MgdGVzdFVSTFJlZmxlY3Rpb24oJ2NpdGUnLCAnYmxv
Y2txdW90ZScpIGlzICdVUkwnCitQQVNTIHRlc3RVUkxSZWZsZWN0aW9uKCdjaXRlJywgJ2RlbCcp
IGlzICdVUkwnCitQQVNTIHRlc3RVUkxSZWZsZWN0aW9uKCdjaXRlJywgJ2lucycpIGlzICdVUkwn
CitQQVNTIHRlc3RVUkxSZWZsZWN0aW9uKCdjaXRlJywgJ3EnKSBpcyAnVVJMJwogUEFTUyB0ZXN0
VVJMUmVmbGVjdGlvbignZGF0YScsICdvYmplY3QnKSBpcyAnVVJMJwogRkFJTCB0ZXN0VVJMUmVm
bGVjdGlvbignZm9ybWFjdGlvbicsICdidXR0b24nKSBzaG91bGQgYmUgVVJMLiBXYXMgbm9uZS4K
IEZBSUwgdGVzdFVSTFJlZmxlY3Rpb24oJ2Zvcm1hY3Rpb24nLCAnaW5wdXQnKSBzaG91bGQgYmUg
VVJMLiBXYXMgbm9uZS4KIFBBU1MgdGVzdFVSTFJlZmxlY3Rpb24oJ2hyZWYnLCAnYScpIGlzICdV
UkwnCiBQQVNTIHRlc3RVUkxSZWZsZWN0aW9uKCdocmVmJywgJ2FyZWEnKSBpcyAnVVJMJwogUEFT
UyB0ZXN0VVJMUmVmbGVjdGlvbignaHJlZicsICdsaW5rJykgaXMgJ1VSTCcKLUZBSUwgdGVzdFVS
TFJlZmxlY3Rpb24oJ2hyZWYnLCAnYmFzZScpIHNob3VsZCBiZSBVUkwuIFdhcyBub24tVVJMLgor
UEFTUyB0ZXN0VVJMUmVmbGVjdGlvbignaHJlZicsICdiYXNlJykgaXMgJ1VSTCcKIEZBSUwgdGVz
dFVSTFJlZmxlY3Rpb24oJ2ljb24nLCAnY29tbWFuZCcpIHNob3VsZCBiZSBVUkwuIFdhcyBub25l
LgotRkFJTCB0ZXN0VVJMUmVmbGVjdGlvbignbWFuaWZlc3QnLCAnaHRtbCcpIHNob3VsZCBiZSBV
UkwuIFdhcyBub25lLgorUEFTUyB0ZXN0VVJMUmVmbGVjdGlvbignbWFuaWZlc3QnLCAnaHRtbCcp
IGlzICdVUkwnCiBQQVNTIHRlc3RVUkxSZWZsZWN0aW9uKCdwb3N0ZXInLCAndmlkZW8nKSBpcyAn
VVJMJwogUEFTUyB0ZXN0VVJMUmVmbGVjdGlvbignc3JjJywgJ2F1ZGlvJykgaXMgJ1VSTCcKLUZB
SUwgdGVzdFVSTFJlZmxlY3Rpb24oJ3NyYycsICdlbWJlZCcpIHNob3VsZCBiZSBVUkwuIFdhcyBu
b24tVVJMLgotRkFJTCB0ZXN0VVJMUmVmbGVjdGlvbignc3JjJywgJ2lmcmFtZScpIHNob3VsZCBi
ZSBVUkwuIFdhcyBub24tVVJMLgorUEFTUyB0ZXN0VVJMUmVmbGVjdGlvbignc3JjJywgJ2VtYmVk
JykgaXMgJ1VSTCcKK1BBU1MgdGVzdFVSTFJlZmxlY3Rpb24oJ3NyYycsICdpZnJhbWUnKSBpcyAn
VVJMJwogUEFTUyB0ZXN0VVJMUmVmbGVjdGlvbignc3JjJywgJ2ltZycpIGlzICdVUkwnCiBQQVNT
IHRlc3RVUkxSZWZsZWN0aW9uKCdzcmMnLCAnaW5wdXQnKSBpcyAnVVJMJwogUEFTUyB0ZXN0VVJM
UmVmbGVjdGlvbignc3JjJywgJ3NjcmlwdCcpIGlzICdVUkwnCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9IVE1MQmFzZUVsZW1lbnQvbXVsdGlwbGUtYmFzZS1lbGVtZW50cy1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEJhc2VFbGVtZW50L211
bHRpcGxlLWJhc2UtZWxlbWVudHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9kb20vSFRNTEJhc2VFbGVtZW50L211bHRpcGxlLWJhc2UtZWxlbWVudHMtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2IEBACitUZXN0IHRoZSBiZWhhdmlv
ciBvZiBtdWx0aXBsZSBiYXNlIGVsZW1lbnRzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworUEFTUyBjbGVhbihhbmNob3IuaHJlZikgaXMgJ2h0dHA6Ly9vcmlnaW5hbGJhc2UuY29t
L2ZpbGUnCitQQVNTIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoYmFzZSksIGNsZWFuKGFuY2hv
ci5ocmVmKSBpcyAnaHR0cDovL2RvbWFpbi5jb20vYmFzZS9maWxlJworUEFTUyBiYXNlLmhyZWYg
PSAnaHR0cDovL2RvbWFpbi5jb20vYmFzZS1jaGFuZ2VkLycsIGNsZWFuKGFuY2hvci5ocmVmKSBp
cyAnaHR0cDovL2RvbWFpbi5jb20vYmFzZS1jaGFuZ2VkL2ZpbGUnCitQQVNTIGRvY3VtZW50Lmhl
YWQucmVtb3ZlQ2hpbGQoYmFzZSksIGNsZWFuKGFuY2hvci5ocmVmKSBpcyAnaHR0cDovL29yaWdp
bmFsYmFzZS5jb20vZmlsZScKK1BBU1MgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChiYXNlKSwg
ZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChiYXNlMiksIGNsZWFuKGFuY2hvci5ocmVmKSBpcyAn
aHR0cDovL2RvbWFpbi5jb20vYmFzZS9maWxlJworUEFTUyBiYXNlLnJlbW92ZUF0dHJpYnV0ZSgn
aHJlZicpLCBjbGVhbihhbmNob3IuaHJlZikgaXMgJ2h0dHA6Ly9kb21haW4uY29tL2Jhc2UyL2Zp
bGUnCitQQVNTIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoYmFzZTMpLCBjbGVhbihhbmNob3Iu
aHJlZikgaXMgJ2h0dHA6Ly9kb21haW4uY29tL2Jhc2UyL2ZpbGUnCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwoKUHJvcGVydHkgY2hhbmdlcyBvbjog
TGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEJhc2VFbGVtZW50L211bHRpcGxlLWJhc2UtZWxlbWVu
dHMtZXhwZWN0ZWQudHh0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBuYXRp
dmUKCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQmFzZUVsZW1lbnQvbXVsdGlwbGUt
YmFzZS1lbGVtZW50cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hU
TUxCYXNlRWxlbWVudC9tdWx0aXBsZS1iYXNlLWVsZW1lbnRzLmh0bWwJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQmFzZUVsZW1lbnQvbXVsdGlwbGUtYmFzZS1lbGVt
ZW50cy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQ
VUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL211bHRpcGxlLWJhc2Ut
ZWxlbWVudHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgoKUHJvcGVydHkgY2hh
bmdlcyBvbjogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEJhc2VFbGVtZW50L211bHRpcGxlLWJh
c2UtZWxlbWVudHMuaHRtbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46bWltZS10eXBlCiAgICsgdGV4
dC9odG1sCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9kb20vSFRNTEJhc2VFbGVtZW50L3NjcmlwdC10ZXN0cy9URU1QTEFURS5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxCYXNlRWxlbWVudC9zY3JpcHQt
dGVzdHMvVEVNUExBVEUuaHRtbAkocmV2aXNpb24gNjYyODcpCShmcm9tIExheW91dFRlc3RzL2Zh
c3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NjcmlwdC10ZXN0cy9URU1QTEFURS5odG1sOjY2Mjg3
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEJhc2VFbGVtZW50L3NjcmlwdC10ZXN0cy9U
RU1QTEFURS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBI
VE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJZT1VSX0pTX0ZJTEVfSEVSRSI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9I
VE1MQmFzZUVsZW1lbnQvc2NyaXB0LXRlc3RzL211bHRpcGxlLWJhc2UtZWxlbWVudHMuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEJhc2VFbGVtZW50L3NjcmlwdC10
ZXN0cy9tdWx0aXBsZS1iYXNlLWVsZW1lbnRzLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9kb20vSFRNTEJhc2VFbGVtZW50L3NjcmlwdC10ZXN0cy9tdWx0aXBsZS1iYXNlLWVs
ZW1lbnRzLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ0IEBACitkZXNjcmlwdGlvbignVGVz
dCB0aGUgYmVoYXZpb3Igb2YgbXVsdGlwbGUgYmFzZSBlbGVtZW50cy4nKTsKKwordmFyIG9yaWdp
bmFsQmFzZSA9IGRvY3VtZW50LlVSTC5yZXBsYWNlKC9bXi9dKiQvLCAiIik7CisKK2Z1bmN0aW9u
IGNsZWFuKHVybCkKK3sKKyAgICBpZiAodXJsLmxlbmd0aCA8IG9yaWdpbmFsQmFzZS5sZW5ndGgp
CisgICAgICAgIHJldHVybiB1cmw7CisgICAgaWYgKHVybC5zdWJzdHJpbmcoMCwgb3JpZ2luYWxC
YXNlLmxlbmd0aCkgIT09IG9yaWdpbmFsQmFzZSkKKyAgICAgICAgcmV0dXJuIHVybDsKKyAgICBy
ZXR1cm4gImh0dHA6Ly9vcmlnaW5hbGJhc2UuY29tLyIgKyB1cmwuc3Vic3RyaW5nKG9yaWdpbmFs
QmFzZS5sZW5ndGgpOworfQorCit2YXIgYW5jaG9yID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
YScpOworYW5jaG9yLmhyZWYgPSAiZmlsZSI7CisKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo
YW5jaG9yKTsKKworc2hvdWxkQmUoImNsZWFuKGFuY2hvci5ocmVmKSIsICInaHR0cDovL29yaWdp
bmFsYmFzZS5jb20vZmlsZSciKTsKKwordmFyIGJhc2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdiYXNlJyk7CitiYXNlLmhyZWYgPSAiaHR0cDovL2RvbWFpbi5jb20vYmFzZS8iOworCitzaG91
bGRCZSgiZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChiYXNlKSwgY2xlYW4oYW5jaG9yLmhyZWYp
IiwgIidodHRwOi8vZG9tYWluLmNvbS9iYXNlL2ZpbGUnIik7CitzaG91bGRCZSgiYmFzZS5ocmVm
ID0gJ2h0dHA6Ly9kb21haW4uY29tL2Jhc2UtY2hhbmdlZC8nLCBjbGVhbihhbmNob3IuaHJlZiki
LCAiJ2h0dHA6Ly9kb21haW4uY29tL2Jhc2UtY2hhbmdlZC9maWxlJyIpOworc2hvdWxkQmUoImRv
Y3VtZW50LmhlYWQucmVtb3ZlQ2hpbGQoYmFzZSksIGNsZWFuKGFuY2hvci5ocmVmKSIsICInaHR0
cDovL29yaWdpbmFsYmFzZS5jb20vZmlsZSciKTsKKworYmFzZS5ocmVmID0gImh0dHA6Ly9kb21h
aW4uY29tL2Jhc2UvIjsKKwordmFyIGJhc2UyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYmFz
ZScpOworYmFzZTIuaHJlZiA9ICJodHRwOi8vZG9tYWluLmNvbS9iYXNlMi8iOworCit2YXIgYmFz
ZTMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdiYXNlJyk7CitiYXNlMy5ocmVmID0gImh0dHA6
Ly9kb21haW4uY29tL2Jhc2UzLyI7CisKK3Nob3VsZEJlKCJkb2N1bWVudC5oZWFkLmFwcGVuZENo
aWxkKGJhc2UpLCBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGJhc2UyKSwgY2xlYW4oYW5jaG9y
LmhyZWYpIiwgIidodHRwOi8vZG9tYWluLmNvbS9iYXNlL2ZpbGUnIik7CitzaG91bGRCZSgiYmFz
ZS5yZW1vdmVBdHRyaWJ1dGUoJ2hyZWYnKSwgY2xlYW4oYW5jaG9yLmhyZWYpIiwgIidodHRwOi8v
ZG9tYWluLmNvbS9iYXNlMi9maWxlJyIpOworc2hvdWxkQmUoImRvY3VtZW50LmhlYWQuYXBwZW5k
Q2hpbGQoYmFzZTMpLCBjbGVhbihhbmNob3IuaHJlZikiLCAiJ2h0dHA6Ly9kb21haW4uY29tL2Jh
c2UyL2ZpbGUnIik7CisKK2RvY3VtZW50LmhlYWQucmVtb3ZlQ2hpbGQoYmFzZSk7Citkb2N1bWVu
dC5oZWFkLnJlbW92ZUNoaWxkKGJhc2UyKTsKK2RvY3VtZW50LmhlYWQucmVtb3ZlQ2hpbGQoYmFz
ZTMpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZG9tL3NjcmlwdC10ZXN0cy9VUkwtYXR0cmlidXRlLXJlZmxlY3Rpb24uanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vc2NyaXB0LXRlc3RzL1VSTC1hdHRyaWJ1dGUt
cmVmbGVjdGlvbi5qcwkocmV2aXNpb24gNjYyODcpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9z
Y3JpcHQtdGVzdHMvVVJMLWF0dHJpYnV0ZS1yZWZsZWN0aW9uLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC0yNCwxMiArMjQsMTIgQEAgZnVuY3Rpb24gdGVzdFVSTFJlZmxlY3Rpb24oYXR0cmlidXRlTmFt
ZQogICAgIGlmICh4VmFsdWUgPT09ICJ4IikKICAgICAgICAgcmV0dXJuICJub24tVVJMIjsKICAg
ICBpZiAoeFZhbHVlICE9PSBkb2N1bWVudC5iYXNlVVJJLnJlcGxhY2UoL1teXC9dKyQvLCAieCIp
KQotICAgICAgICByZXR1cm4gImVycm9yOiAiICsgeFZhbHVlOworICAgICAgICByZXR1cm4gImVy
cm9yICh4KTogIiArIHhWYWx1ZTsKICAgICBpZiAoZW1wdHlWYWx1ZSA9PT0gIiIpCiAgICAgICAg
IHJldHVybiAibm9uLWVtcHR5IFVSTCI7CiAgICAgaWYgKGVtcHR5VmFsdWUgPT09IGRvY3VtZW50
LmJhc2VVUkkpCiAgICAgICAgIHJldHVybiAiVVJMIjsKLSAgICByZXR1cm4gImVycm9yOiAiICsg
dmFsdWU7CisgICAgcmV0dXJuICJlcnJvciAoZW1wdHkpOiAiICsgZW1wdHlWYWx1ZTsKIH0KIAog
c2hvdWxkQmUoInRlc3RVUkxSZWZsZWN0aW9uKCdhdHRyaWJ1dGUnLCAnZWxlbWVudCcpIiwgIidu
b25lJyIpOwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9y
L2Z1bGwtYmxvY2staWZyYW1lLW5vLWluaGVyaXQucGhwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9mdWxsLWJsb2NrLWlmcmFtZS1uby1p
bmhlcml0LnBocAkocmV2aXNpb24gNjYyODcpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L3hzc0F1ZGl0b3IvZnVsbC1ibG9jay1pZnJhbWUtbm8taW5oZXJpdC5waHAJKHdvcmtp
bmcgY29weSkKQEAgLTE0LDcgKzE0LDcgQEAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgewogfQogZnVuY3Rpb24gY2hlY2tJZkRvbmUoKQogewotICAgIGNoZWNrSWZGcmFtZUxvY2F0
aW9uTWF0Y2hlc1VSTEFuZENhbGxEb25lKCdmcmFtZScsIGVuY29kZVVSSShkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnZnJhbWUnKS5zcmMpKTsKKyAgICBjaGVja0lmRnJhbWVMb2NhdGlvbk1hdGNo
ZXNVUkxBbmRDYWxsRG9uZSgnZnJhbWUnLCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZnJhbWUn
KS5zcmMpOwogfQogPC9zY3JpcHQ+CiA8L2hlYWQ+Cg==
</data>
<flag name="review"
          id="54666"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>