<?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>164782</bug_id>
          
          <creation_ts>2016-11-15 11:29:28 -0800</creation_ts>
          <short_desc>[WebGL] Remove unused Chromium-specific OpenGL extensions</short_desc>
          <delta_ts>2016-11-15 12:55:49 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jonlee</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>noam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1251504</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-11-15 11:29:28 -0800</bug_when>
    <thetext>[WebGL] Remove unused Chromium-specific OpenGL extensions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1251506</commentid>
    <comment_count>1</comment_count>
      <attachid>294856</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-11-15 11:30:09 -0800</bug_when>
    <thetext>Created attachment 294856
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1251512</commentid>
    <comment_count>2</comment_count>
      <attachid>294859</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-11-15 11:33:39 -0800</bug_when>
    <thetext>Created attachment 294859
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1251519</commentid>
    <comment_count>3</comment_count>
      <attachid>294856</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2016-11-15 11:39:58 -0800</bug_when>
    <thetext>Comment on attachment 294856
Patch

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

&gt; Source/WebCore/html/canvas/WebGLDrawBuffers.cpp:107
&gt; +    bool supportsDepth = (context-&gt;getExtensions()-&gt;supports(&quot;GL_OES_depth_texture&quot;)

We don&apos;t really need the outer () here.

&gt; Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp:1373
&gt; +            zero = std::make_unique&lt;unsigned char[]&gt;(size);

I wonder if we should change this to use JSC::Uint8Array::create? Aren&apos;t they zero filled anyway?

&gt; Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp:1809
&gt; +    // Ensure we have a valid rendering state

Nit: .

&gt; Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp:1874
&gt; +    // Ensure we have a valid rendering state

Nit: .</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1251534</commentid>
    <comment_count>4</comment_count>
      <attachid>294856</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-11-15 11:52:22 -0800</bug_when>
    <thetext>Comment on attachment 294856
Patch

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

&gt;&gt; Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp:1373
&gt;&gt; +            zero = std::make_unique&lt;unsigned char[]&gt;(size);
&gt; 
&gt; I wonder if we should change this to use JSC::Uint8Array::create? Aren&apos;t they zero filled anyway?

Why Uint8Array? It&apos;s just a temporary buffer that goes away immediately; if anything, it should be a Vector&lt;uint8_t&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1251538</commentid>
    <comment_count>5</comment_count>
      <attachid>294861</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-11-15 11:56:26 -0800</bug_when>
    <thetext>Created attachment 294861
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1251539</commentid>
    <comment_count>6</comment_count>
      <attachid>294861</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-15 11:58:30 -0800</bug_when>
    <thetext>Comment on attachment 294861
Patch for committing

Rejecting attachment 294861 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 294861, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

ChangeLog entry in Source/WebCore/ChangeLog contains OOPS!.

Full output: http://webkit-queues.webkit.org/results/2521215</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1251546</commentid>
    <comment_count>7</comment_count>
      <attachid>294862</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-11-15 12:07:52 -0800</bug_when>
    <thetext>Created attachment 294862
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1251578</commentid>
    <comment_count>8</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-11-15 12:55:35 -0800</bug_when>
    <thetext>Committed r208747: &lt;http://trac.webkit.org/changeset/208747&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294856</attachid>
            <date>2016-11-15 11:30:09 -0800</date>
            <delta_ts>2016-11-15 11:54:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164782-20161115113007.patch</filename>
            <type>text/plain</type>
            <size>32440</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4NzI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjczOTZiZWM3N2MyYmQw
ZTQ1NzQ0YzcxZTNmYjEzZTJhN2E0NjY5MC4uNDUzODFkZWIwODRlNjhjMGY5NzYzZTFjNjY0MTRl
ZDdjZWM4NGQzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE2LTExLTE1ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdMXSBS
ZW1vdmUgdW51c2VkIENocm9taXVtLXNwZWNpZmljIE9wZW5HTCBleHRlbnNpb25zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ3ODIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVj
YXVzZSB0aGVyZSBpcyBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmNvcHlCdWZmZXJTdWJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbik6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21w
cmVzc2VkVGV4dHVyZVMzVEM6OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xEZXB0aFRleHR1cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xEZXB0aFRleHR1cmU6
OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTERyYXdCdWZmZXJzOjpzYXRpc2ZpZXNXZWJHTFJlcXVp
cmVtZW50cyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjpvbkFjY2Vzcyk6CisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmdldEV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmNsZWFyKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnNldHVwRmxhZ3MpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6YnVmZmVyRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpidWZmZXJTdWJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OmNvcHlUZXhTdWJJbWFnZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlRHJhd0FycmF5cyk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZURyYXdFbGVtZW50cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpyZWFkUGl4ZWxzKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleEltYWdlMkRC
YXNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNvcHlU
ZXhJbWFnZTJEKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjppc0dM
RVMyTlBPVFN0cmljdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjppc0Vycm9yR2VuZXJhdGVkT25PdXRPZkJvdW5kc0FjY2Vzc2VzKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmlzUmVzb3VyY2VTYWZl
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQz
RC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dGV4SW1hZ2UyRFJl
c291cmNlU2FmZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
M0QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
M0RPcGVuR0xDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OmlzUmVzb3VyY2VTYWZlKTogRGVsZXRlZC4KKwogMjAxNi0xMS0xNCAgQWxleCBDaHJpc3RlbnNl
biAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIE1vdmUgU2VjdXJpdHlPcmln
aW46OmNyZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIgdG8gU2VjdXJpdHlPcmlnaW5EYXRhCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRl
eHQuY3BwCmluZGV4IGVlMTQwYTgzNzY2NmQ5Nzc1YTNlZTc4ODliYjc2MDM5MTY0ODZkYTAuLjJl
ZmU0OWIzZDM2NDVjMDFiYTRjMDA4NDliODE1YzBmMzI4NGFmZTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0x
OTgsMTEgKzE5OCw5IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y29weUJ1ZmZlclN1
YkRhdGEoR0MzRGVudW0gcmVhZFRhcmdldCwgR0MzRGVudW0gd3JpCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBpZiAoIXRoaXMtPmlzRXJyb3JHZW5lcmF0ZWRPbk91dE9mQm91bmRzQWNj
ZXNzZXMoKSkgewotICAgICAgICBpZiAoIXdyaXRlQnVmZmVyLT5hc3NvY2lhdGVDb3B5QnVmZmVy
U3ViRGF0YSgqcmVhZEJ1ZmZlciwgY2hlY2tlZFJlYWRPZmZzZXQudW5zYWZlR2V0KCksIGNoZWNr
ZWRXcml0ZU9mZnNldC51bnNhZmVHZXQoKSwgY2hlY2tlZFNpemUudW5zYWZlR2V0KCkpKSB7Ci0g
ICAgICAgICAgICB0aGlzLT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5W
QUxJRF9WQUxVRSwgImNvcHlCdWZmZXJTdWJEYXRhIiwgIm9mZnNldCBvdXQgb2YgcmFuZ2UiKTsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAgIGlmICghd3JpdGVCdWZmZXItPmFz
c29jaWF0ZUNvcHlCdWZmZXJTdWJEYXRhKCpyZWFkQnVmZmVyLCBjaGVja2VkUmVhZE9mZnNldC51
bnNhZmVHZXQoKSwgY2hlY2tlZFdyaXRlT2Zmc2V0LnVuc2FmZUdldCgpLCBjaGVja2VkU2l6ZS51
bnNhZmVHZXQoKSkpIHsKKyAgICAgICAgdGhpcy0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3ND
b250ZXh0M0Q6OklOVkFMSURfVkFMVUUsICJjb3B5QnVmZmVyU3ViRGF0YSIsICJvZmZzZXQgb3V0
IG9mIHJhbmdlIik7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBtX2NvbnRleHQtPm1v
dmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpOwpAQCAtNDQwLDcgKzQzOCw3IEBAIHZvaWQg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y2xlYXIoR0MzRGJpdGZpZWxkIG1hc2spCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgY29uc3QgY2hhciogcmVhc29uID0gImZyYW1lYnVmZmVyIGlu
Y29tcGxldGUiOwotICAgIGlmIChtX2ZyYW1lYnVmZmVyQmluZGluZyAmJiAhbV9mcmFtZWJ1ZmZl
ckJpbmRpbmctPm9uQWNjZXNzKGdyYXBoaWNzQ29udGV4dDNEKCksICFpc1Jlc291cmNlU2FmZSgp
LCAmcmVhc29uKSkgeworICAgIGlmIChtX2ZyYW1lYnVmZmVyQmluZGluZyAmJiAhbV9mcmFtZWJ1
ZmZlckJpbmRpbmctPm9uQWNjZXNzKGdyYXBoaWNzQ29udGV4dDNEKCksICZyZWFzb24pKSB7CiAg
ICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0ZSQU1F
QlVGRkVSX09QRVJBVElPTiwgImNsZWFyIiwgcmVhc29uKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KQEAgLTkxNCwxMCArOTEyLDggQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMMlJlbmRlcmluZ0Nv
bnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgfQogICAgIGlmIChl
cXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJXRUJHTF9kZXB0aF90ZXh0dXJlIikKICAgICAg
ICAgJiYgV2ViR0xEZXB0aFRleHR1cmU6OnN1cHBvcnRlZChncmFwaGljc0NvbnRleHQzRCgpKSkg
ewotICAgICAgICBpZiAoIW1fd2ViZ2xEZXB0aFRleHR1cmUpIHsKLSAgICAgICAgICAgIG1fY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5lbnN1cmVFbmFibGVkKCJHTF9DSFJPTUlVTV9kZXB0aF90
ZXh0dXJlIik7Ci0gICAgICAgICAgICBtX3dlYmdsRGVwdGhUZXh0dXJlID0gc3RkOjptYWtlX3Vu
aXF1ZTxXZWJHTERlcHRoVGV4dHVyZT4odGhpcyk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKCFt
X3dlYmdsRGVwdGhUZXh0dXJlKQorICAgICAgICAgICAgbV93ZWJnbERlcHRoVGV4dHVyZSA9IHN0
ZDo6bWFrZV91bmlxdWU8V2ViR0xEZXB0aFRleHR1cmU+KCp0aGlzKTsKICAgICAgICAgcmV0dXJu
IG1fd2ViZ2xEZXB0aFRleHR1cmUuZ2V0KCk7CiAgICAgfQogICAgIGlmIChlcXVhbElnbm9yaW5n
QVNDSUlDYXNlKG5hbWUsICJXRUJHTF9kZWJ1Z19yZW5kZXJlcl9pbmZvIikpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RD
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVT
M1RDLmNwcAppbmRleCA0MmJjZDA4MTBjOTRjNWJjNTljMWY3YWE1ZWZkOTBmMmJlYWQyNGFiLi44
MDY5N2M5ODU3NjM3NjczN2EyYWQ0YjQ0OGRhOWU0MjIwMWU2YTllIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMu
Y3BwCkBAIC01Niw5ICs1Niw3IEBAIGJvb2wgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OnN1
cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjb250ZXh0KQogewogICAgIEV4dGVu
c2lvbnMzRCogZXh0ZW5zaW9ucyA9IGNvbnRleHQtPmdyYXBoaWNzQ29udGV4dDNEKCktPmdldEV4
dGVuc2lvbnMoKTsKICAgICByZXR1cm4gZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0VYVF90ZXh0
dXJlX2NvbXByZXNzaW9uX3MzdGMiKQotICAgICAgICB8fCAoZXh0ZW5zaW9ucy0+c3VwcG9ydHMo
IkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEiKQotICAgICAgICAgICAgJiYgZXh0ZW5z
aW9ucy0+c3VwcG9ydHMoIkdMX0NIUk9NSVVNX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MyIpCi0g
ICAgICAgICAgICAmJiBleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfQ0hST01JVU1fdGV4dHVyZV9j
b21wcmVzc2lvbl9keHQ1IikpOworICAgICAgICB8fCBleHRlbnNpb25zLT5zdXBwb3J0cygiR0xf
RVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MSIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4
dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5j
cHAKaW5kZXggOGZkOTA3OTM1ZjNiMTFjZDAwNTFiMDIwMTFjYjVmYjA1MmIyMmUyMy4uOGExZDE2
NDY5Nzc4YzAyZTM0OWZlNzBiMGViMmFmNDE1NDAyMjdlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZXB0aFRleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmNwcApAQCAtNTAsOCArNTAsNyBAQCBX
ZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBXZWJHTERlcHRoVGV4dHVyZTo6Z2V0TmFtZSgp
IGNvbnN0CiBib29sIFdlYkdMRGVwdGhUZXh0dXJlOjpzdXBwb3J0ZWQoR3JhcGhpY3NDb250ZXh0
M0QqIGNvbnRleHQpCiB7CiAgICAgRXh0ZW5zaW9uczNEKiBleHRlbnNpb25zID0gY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpOwotICAgIHJldHVybiBleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfQ0hS
T01JVU1fZGVwdGhfdGV4dHVyZSIpCi0gICAgICAgIHx8IGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJH
TF9PRVNfZGVwdGhfdGV4dHVyZSIpCisgICAgcmV0dXJuIGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJH
TF9PRVNfZGVwdGhfdGV4dHVyZSIpCiAgICAgICAgIHx8IGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJH
TF9BUkJfZGVwdGhfdGV4dHVyZSIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwCmluZGV4IDdiYzcyYTZlNTk2MzIxNTFkMmFjNDRhNThl
OGU3NWY3MDk2NTU1MzguLmNiNmIzMzcwZjI0OTQwN2NiNWJiNDg0N2FkYjZiMDM1NzkzMjA1NjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3Bw
CkBAIC0xMDQsOCArMTA0LDcgQEAgYm9vbCBXZWJHTERyYXdCdWZmZXJzOjpzYXRpc2ZpZXNXZWJH
TFJlcXVpcmVtZW50cyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiB3ZWIKICAgICBjb250ZXh0
LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBmYm8pOwog
CiAgICAgY29uc3QgdW5zaWduZWQgY2hhciBidWZmZXJbNF0gPSB7IDAsIDAsIDAsIDAgfTsgLy8g
dGV4dHVyZXMgYXJlIHJlcXVpcmVkIHRvIGJlIGluaXRpYWxpemVkIGZvciBvdGhlciBwb3J0cy4K
LSAgICBib29sIHN1cHBvcnRzRGVwdGggPSAoY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBw
b3J0cygiR0xfQ0hST01JVU1fZGVwdGhfdGV4dHVyZSIpCi0gICAgICAgIHx8IGNvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX09FU19kZXB0aF90ZXh0dXJlIikKKyAgICBib29s
IHN1cHBvcnRzRGVwdGggPSAoY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xf
T0VTX2RlcHRoX3RleHR1cmUiKQogICAgICAgICB8fCBjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkt
PnN1cHBvcnRzKCJHTF9BUkJfZGVwdGhfdGV4dHVyZSIpKTsKICAgICBib29sIHN1cHBvcnRzRGVw
dGhTdGVuY2lsID0gKGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX0VYVF9w
YWNrZWRfZGVwdGhfc3RlbmNpbCIpCiAgICAgICAgIHx8IGNvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS0+c3VwcG9ydHMoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCIpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAKaW5kZXggOTYxZmJhZTgx
YmZkNGJiZTYxNDFjYzU0ZjE1YmM2ODczZWMwYzg4NS4uZDM4MDFmN2NkZDUwODIzNzkzNWI3Mzlh
NDllZmM4ZTVlYjc3OTkyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xGcmFtZWJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xGcmFtZWJ1ZmZlci5jcHAKQEAgLTQ3OSwxMyArNDc5LDExIEBAIEdDM0RlbnVtIFdlYkdMRnJh
bWVidWZmZXI6OmNoZWNrU3RhdHVzKGNvbnN0IGNoYXIqKiByZWFzb24pIGNvbnN0CiAgICAgcmV0
dXJuIEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9DT01QTEVURTsKIH0KIAotYm9vbCBX
ZWJHTEZyYW1lYnVmZmVyOjpvbkFjY2VzcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNkLCBi
b29sIG5lZWRUb0luaXRpYWxpemVBdHRhY2htZW50cywgY29uc3QgY2hhcioqIHJlYXNvbikKK2Jv
b2wgV2ViR0xGcmFtZWJ1ZmZlcjo6b25BY2Nlc3MoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQz
ZCwgY29uc3QgY2hhcioqIHJlYXNvbikKIHsKICAgICBpZiAoY2hlY2tTdGF0dXMocmVhc29uKSAh
PSBHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVJfQ09NUExFVEUpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBpZiAobmVlZFRvSW5pdGlhbGl6ZUF0dGFjaG1lbnRzKQotICAgICAgICBy
ZXR1cm4gaW5pdGlhbGl6ZUF0dGFjaG1lbnRzKGNvbnRleHQzZCwgcmVhc29uKTsKLSAgICByZXR1
cm4gdHJ1ZTsKKyAgICByZXR1cm4gaW5pdGlhbGl6ZUF0dGFjaG1lbnRzKGNvbnRleHQzZCwgcmVh
c29uKTsKIH0KIAogYm9vbCBXZWJHTEZyYW1lYnVmZmVyOjpoYXNTdGVuY2lsQnVmZmVyKCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZm
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaAppbmRl
eCA1YWM0ZmI3ZTkxZTEyMGRlM2RkYjg5OWFkYzFjZjg5ZDQxNzg5MzlkLi4yMWVhZTExYTU1ZTRl
NzMwMWE2YTgzZDgzYjA3YmM1NzQ3OTk4ZjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oCkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKICAgICAv
LyBSZXR1cm4gZmFsc2UgaWYgdGhlIGZyYW1lYnVmZmVyIGlzIGluY29tcGxldGU7IG90aGVyd2lz
ZSBpbml0aWFsaXplCiAgICAgLy8gdGhlIGJ1ZmZlcnMgaWYgdGhleSBoYXZlbid0IGJlZW4gaW5p
dGlhbGl6ZWQgYW5kCiAgICAgLy8gbmVlZFRvSW5pdGlhbGl6ZUF0dGFjaG1lbnRzIGlzIHRydWUu
Ci0gICAgYm9vbCBvbkFjY2VzcyhHcmFwaGljc0NvbnRleHQzRCosIGJvb2wgbmVlZFRvSW5pdGlh
bGl6ZUF0dGFjaG1lbnRzLCBjb25zdCBjaGFyKiogcmVhc29uKTsKKyAgICBib29sIG9uQWNjZXNz
KEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgY2hhcioqIHJlYXNvbik7CiAKICAgICAvLyBTb2Z0
d2FyZSB2ZXJzaW9uIG9mIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cygpLCBleGNlcHQgdGhhdCB3
aGVuCiAgICAgLy8gRlJBTUVCVUZGRVJfQ09NUExFVEUgaXMgcmV0dXJuZWQsIGl0IGlzIHN0aWxs
IHBvc3NpYmxlIGZvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggOTZiODA4ZDQ5ZTA4NmM5ZjViNzg0MGViMGQ2ZWMy
YTkyNTE4YzY3YS4uMzE4YzliZmVmZTkwMGZiZGM5MDdkOTE5YTQ1YjcyNmEzZWY3YzFhMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHQuY3BwCkBAIC0yMTAsMTAgKzIxMCw4IEBAIFdlYkdMRXh0ZW5zaW9uKiBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgfQogICAgIGlm
IChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJXRUJHTF9kZXB0aF90ZXh0dXJlIikKICAg
ICAgICAgJiYgV2ViR0xEZXB0aFRleHR1cmU6OnN1cHBvcnRlZChncmFwaGljc0NvbnRleHQzRCgp
KSkgewotICAgICAgICBpZiAoIW1fd2ViZ2xEZXB0aFRleHR1cmUpIHsKLSAgICAgICAgICAgIG1f
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5lbnN1cmVFbmFibGVkKCJHTF9DSFJPTUlVTV9kZXB0
aF90ZXh0dXJlIik7CisgICAgICAgIGlmICghbV93ZWJnbERlcHRoVGV4dHVyZSkKICAgICAgICAg
ICAgIG1fd2ViZ2xEZXB0aFRleHR1cmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMRGVwdGhUZXh0
dXJlPih0aGlzKTsKLSAgICAgICAgfQogICAgICAgICByZXR1cm4gbV93ZWJnbERlcHRoVGV4dHVy
ZS5nZXQoKTsKICAgICB9CiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIldF
QkdMX2RyYXdfYnVmZmVycyIpICYmIHN1cHBvcnRzRHJhd0J1ZmZlcnMoKSkgewpAQCAtNDU2LDcg
KzQ1NCw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpjbGVhcihHQzNEYml0ZmllbGQg
bWFzaykKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjb25zdCBjaGFyKiByZWFzb24gPSAi
ZnJhbWVidWZmZXIgaW5jb21wbGV0ZSI7Ci0gICAgaWYgKG1fZnJhbWVidWZmZXJCaW5kaW5nICYm
ICFtX2ZyYW1lYnVmZmVyQmluZGluZy0+b25BY2Nlc3MoZ3JhcGhpY3NDb250ZXh0M0QoKSwgIWlz
UmVzb3VyY2VTYWZlKCksICZyZWFzb24pKSB7CisgICAgaWYgKG1fZnJhbWVidWZmZXJCaW5kaW5n
ICYmICFtX2ZyYW1lYnVmZmVyQmluZGluZy0+b25BY2Nlc3MoZ3JhcGhpY3NDb250ZXh0M0QoKSwg
JnJlYXNvbikpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6
OklOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OLCAiY2xlYXIiLCByZWFzb24pOwogICAgICAg
ICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCAyZWI5MjgxZDJjY2U3NGIxODMy
ODE1MTdmZTM4NGU0OGUwOGE4MDI4Li40OTlmZjMxZDk4ODlmN2M0OGI1NzU3ODUwZmRlMTc5MTJi
NTIzYzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtNTc1LDggKzU3NSw2IEBAIHZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6c2V0dXBGbGFncygpCiAgICAgICAgIG1fc3ludGhlc2l6ZWRF
cnJvcnNUb0NvbnNvbGUgPSBwYWdlLT5zZXR0aW5ncygpLndlYkdMRXJyb3JzVG9Db25zb2xlRW5h
YmxlZCgpOwogCiAgICAgbV9pc0dMRVMyQ29tcGxpYW50ID0gbV9jb250ZXh0LT5pc0dMRVMyQ29t
cGxpYW50KCk7Ci0gICAgbV9pc0Vycm9yR2VuZXJhdGVkT25PdXRPZkJvdW5kc0FjY2Vzc2VzID0g
bV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmlzRW5hYmxlZCgiR0xfQ0hST01JVU1fc3RyaWN0
X2F0dHJpYnMiKTsKLSAgICBtX2lzUmVzb3VyY2VTYWZlID0gbV9jb250ZXh0LT5nZXRFeHRlbnNp
b25zKCktPmlzRW5hYmxlZCgiR0xfQ0hST01JVU1fcmVzb3VyY2Vfc2FmZSIpOwogICAgIGlmICht
X2lzR0xFUzJDb21wbGlhbnQpIHsKICAgICAgICAgbV9pc0dMRVMyTlBPVFN0cmljdCA9ICFtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS0+aXNFbmFibGVkKCJHTF9PRVNfdGV4dHVyZV9ucG90Iik7
CiAgICAgICAgIG1faXNEZXB0aFN0ZW5jaWxTdXBwb3J0ZWQgPSBtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS0+aXNFbmFibGVkKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKTsKQEAgLTEw
OTEsMTEgKzEwODksOSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJ1ZmZlckRh
dGEoR0MzRGVudW0gdGFyZ2V0LCBsb25nIGxvbmcgc2l6ZSwgR0MzRAogICAgICAgICBzeW50aGVz
aXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSwgImJ1ZmZlckRhdGEi
LCAic2l6ZSA9PSAwIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKCFpc0Vycm9y
R2VuZXJhdGVkT25PdXRPZkJvdW5kc0FjY2Vzc2VzKCkpIHsKLSAgICAgICAgaWYgKCFidWZmZXIt
PmFzc29jaWF0ZUJ1ZmZlckRhdGEoc3RhdGljX2Nhc3Q8R0MzRHNpemVpcHRyPihzaXplKSkpIHsK
LSAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElE
X1ZBTFVFLCAiYnVmZmVyRGF0YSIsICJpbnZhbGlkIGJ1ZmZlciIpOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9CisgICAgaWYgKCFidWZmZXItPmFzc29jaWF0ZUJ1ZmZlckRhdGEoc3Rh
dGljX2Nhc3Q8R0MzRHNpemVpcHRyPihzaXplKSkpIHsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJy
b3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUsICJidWZmZXJEYXRhIiwgImludmFs
aWQgYnVmZmVyIik7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBtX2NvbnRleHQtPm1v
dmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpOwpAQCAtMTExOSwxMSArMTExNSw5IEBAIHZv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YnVmZmVyRGF0YShHQzNEZW51bSB0YXJnZXQs
IE9wdGlvbmFsPEJ1ZmZlckRhdGFTCiAgICAgICAgIHJldHVybjsKIAogICAgIFdURjo6dmlzaXQo
WyZdKGF1dG8mIGRhdGEpIHsKLSAgICAgICAgaWYgKCF0aGlzLT5pc0Vycm9yR2VuZXJhdGVkT25P
dXRPZkJvdW5kc0FjY2Vzc2VzKCkpIHsKLSAgICAgICAgICAgIGlmICghYnVmZmVyLT5hc3NvY2lh
dGVCdWZmZXJEYXRhKGRhdGEuZ2V0KCkpKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy0+c3ludGhl
c2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUsICJidWZmZXJEYXRh
IiwgImludmFsaWQgYnVmZmVyIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgfQorICAgICAgICBpZiAoIWJ1ZmZlci0+YXNzb2NpYXRlQnVmZmVyRGF0YShkYXRhLmdldCgp
KSkgeworICAgICAgICAgICAgdGhpcy0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0
M0Q6OklOVkFMSURfVkFMVUUsICJidWZmZXJEYXRhIiwgImludmFsaWQgYnVmZmVyIik7CisgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBtX2NvbnRleHQtPm1vdmVFcnJv
cnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpOwpAQCAtMTE1MCwxMSArMTE0NCw5IEBAIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YnVmZmVyU3ViRGF0YShHQzNEZW51bSB0YXJnZXQsIGxv
bmcgbG9uZyBvZmZzZXQsCiAgICAgICAgIHJldHVybjsKIAogICAgIFdURjo6dmlzaXQoWyZdKGF1
dG8mIGRhdGEpIHsKLSAgICAgICAgaWYgKCF0aGlzLT5pc0Vycm9yR2VuZXJhdGVkT25PdXRPZkJv
dW5kc0FjY2Vzc2VzKCkpIHsKLSAgICAgICAgICAgIGlmICghYnVmZmVyLT5hc3NvY2lhdGVCdWZm
ZXJTdWJEYXRhKHN0YXRpY19jYXN0PEdDM0RpbnRwdHI+KG9mZnNldCksIGRhdGEuZ2V0KCkpKSB7
Ci0gICAgICAgICAgICAgICAgdGhpcy0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0
M0Q6OklOVkFMSURfVkFMVUUsICJidWZmZXJTdWJEYXRhIiwgIm9mZnNldCBvdXQgb2YgcmFuZ2Ui
KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9CisgICAgICAgIGlmICgh
YnVmZmVyLT5hc3NvY2lhdGVCdWZmZXJTdWJEYXRhKHN0YXRpY19jYXN0PEdDM0RpbnRwdHI+KG9m
ZnNldCksIGRhdGEuZ2V0KCkpKSB7CisgICAgICAgICAgICB0aGlzLT5zeW50aGVzaXplR0xFcnJv
cihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSwgImJ1ZmZlclN1YkRhdGEiLCAib2Zm
c2V0IG91dCBvZiByYW5nZSIpOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAg
ICAgICAgbV9jb250ZXh0LT5tb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKTsKQEAgLTEz
NTUsNDUgKzEzNDcsNDEgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjb3B5VGV4
U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBjb25zdCBjaGFyKiByZWFzb24gPSAiZnJhbWVidWZmZXIgaW5jb21wbGV0
ZSI7Ci0gICAgaWYgKG1fZnJhbWVidWZmZXJCaW5kaW5nICYmICFtX2ZyYW1lYnVmZmVyQmluZGlu
Zy0+b25BY2Nlc3MoZ3JhcGhpY3NDb250ZXh0M0QoKSwgIWlzUmVzb3VyY2VTYWZlKCksICZyZWFz
b24pKSB7CisgICAgaWYgKG1fZnJhbWVidWZmZXJCaW5kaW5nICYmICFtX2ZyYW1lYnVmZmVyQmlu
ZGluZy0+b25BY2Nlc3MoZ3JhcGhpY3NDb250ZXh0M0QoKSwgJnJlYXNvbikpIHsKICAgICAgICAg
c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRlJBTUVCVUZGRVJf
T1BFUkFUSU9OLCAiY29weVRleFN1YkltYWdlMkQiLCByZWFzb24pOwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIGNsZWFySWZDb21wb3NpdGVkKCk7Ci0gICAgaWYgKGlzUmVzb3VyY2VTYWZl
KCkpCi0gICAgICAgIG1fY29udGV4dC0+Y29weVRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwg
eG9mZnNldCwgeW9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCk7Ci0gICAgZWxzZSB7Ci0gICAg
ICAgIEdDM0RpbnQgY2xpcHBlZFgsIGNsaXBwZWRZOwotICAgICAgICBHQzNEc2l6ZWkgY2xpcHBl
ZFdpZHRoLCBjbGlwcGVkSGVpZ2h0OwotICAgICAgICBpZiAoY2xpcDJEKHgsIHksIHdpZHRoLCBo
ZWlnaHQsIGdldEJvdW5kRnJhbWVidWZmZXJXaWR0aCgpLCBnZXRCb3VuZEZyYW1lYnVmZmVySGVp
Z2h0KCksICZjbGlwcGVkWCwgJmNsaXBwZWRZLCAmY2xpcHBlZFdpZHRoLCAmY2xpcHBlZEhlaWdo
dCkpIHsKLSAgICAgICAgICAgIEdDM0RlbnVtIGZvcm1hdDsKLSAgICAgICAgICAgIEdDM0RlbnVt
IHR5cGU7Ci0gICAgICAgICAgICBpZiAoIUdyYXBoaWNzQ29udGV4dDNEOjpwb3NzaWJsZUZvcm1h
dEFuZFR5cGVGb3JJbnRlcm5hbEZvcm1hdCh0ZXgtPmdldEludGVybmFsRm9ybWF0KHRhcmdldCwg
bGV2ZWwpLCBmb3JtYXQsIHR5cGUpKSB7Ci0gICAgICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJy
b3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSwgImNvcHlUZXhTdWJJbWFnZTJEIiwg
IlRleHR1cmUgaGFzIHVua25vd24gaW50ZXJuYWwgZm9ybWF0Iik7CisKKyAgICBHQzNEaW50IGNs
aXBwZWRYLCBjbGlwcGVkWTsKKyAgICBHQzNEc2l6ZWkgY2xpcHBlZFdpZHRoLCBjbGlwcGVkSGVp
Z2h0OworICAgIGlmIChjbGlwMkQoeCwgeSwgd2lkdGgsIGhlaWdodCwgZ2V0Qm91bmRGcmFtZWJ1
ZmZlcldpZHRoKCksIGdldEJvdW5kRnJhbWVidWZmZXJIZWlnaHQoKSwgJmNsaXBwZWRYLCAmY2xp
cHBlZFksICZjbGlwcGVkV2lkdGgsICZjbGlwcGVkSGVpZ2h0KSkgeworICAgICAgICBHQzNEZW51
bSBmb3JtYXQ7CisgICAgICAgIEdDM0RlbnVtIHR5cGU7CisgICAgICAgIGlmICghR3JhcGhpY3ND
b250ZXh0M0Q6OnBvc3NpYmxlRm9ybWF0QW5kVHlwZUZvckludGVybmFsRm9ybWF0KHRleC0+Z2V0
SW50ZXJuYWxGb3JtYXQodGFyZ2V0LCBsZXZlbCksIGZvcm1hdCwgdHlwZSkpIHsKKyAgICAgICAg
ICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0sICJj
b3B5VGV4U3ViSW1hZ2UyRCIsICJUZXh0dXJlIGhhcyB1bmtub3duIGludGVybmFsIGZvcm1hdCIp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjx1bnNpZ25lZCBjaGFyW10+IHplcm87CisgICAgICAgIGlmICh3aWR0aCAmJiBoZWlnaHQpIHsK
KyAgICAgICAgICAgIHVuc2lnbmVkIHNpemU7CisgICAgICAgICAgICBHQzNEZW51bSBlcnJvciA9
IG1fY29udGV4dC0+Y29tcHV0ZUltYWdlU2l6ZUluQnl0ZXMoZm9ybWF0LCB0eXBlLCB3aWR0aCwg
aGVpZ2h0LCBtX3VucGFja0FsaWdubWVudCwgJnNpemUsIDApOworICAgICAgICAgICAgaWYgKGVy
cm9yICE9IEdyYXBoaWNzQ29udGV4dDNEOjpOT19FUlJPUikgeworICAgICAgICAgICAgICAgIHN5
bnRoZXNpemVHTEVycm9yKGVycm9yLCAiY29weVRleFN1YkltYWdlMkQiLCAiYmFkIGRpbWVuc2lv
bnMiKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8dW5zaWduZWQgY2hhcltdPiB6ZXJvOwotICAgICAgICAgICAgaWYg
KHdpZHRoICYmIGhlaWdodCkgewotICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzaXplOwot
ICAgICAgICAgICAgICAgIEdDM0RlbnVtIGVycm9yID0gbV9jb250ZXh0LT5jb21wdXRlSW1hZ2VT
aXplSW5CeXRlcyhmb3JtYXQsIHR5cGUsIHdpZHRoLCBoZWlnaHQsIG1fdW5wYWNrQWxpZ25tZW50
LCAmc2l6ZSwgMCk7Ci0gICAgICAgICAgICAgICAgaWYgKGVycm9yICE9IEdyYXBoaWNzQ29udGV4
dDNEOjpOT19FUlJPUikgewotICAgICAgICAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihl
cnJvciwgImNvcHlUZXhTdWJJbWFnZTJEIiwgImJhZCBkaW1lbnNpb25zIik7Ci0gICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgemVy
byA9IHN0ZDo6bWFrZV91bmlxdWU8dW5zaWduZWQgY2hhcltdPihzaXplKTsKLSAgICAgICAgICAg
ICAgICBpZiAoIXplcm8pIHsKLSAgICAgICAgICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3Io
R3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUsICJjb3B5VGV4U3ViSW1hZ2UyRCIsICJv
dXQgb2YgbWVtb3J5Iik7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgbWVtc2V0KHplcm8uZ2V0KCksIDAsIHNpemUpOworICAg
ICAgICAgICAgemVybyA9IHN0ZDo6bWFrZV91bmlxdWU8dW5zaWduZWQgY2hhcltdPihzaXplKTsK
KyAgICAgICAgICAgIGlmICghemVybykgeworICAgICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVy
cm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFLCAiY29weVRleFN1YkltYWdlMkQi
LCAib3V0IG9mIG1lbW9yeSIpOworICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIG1fY29udGV4dC0+dGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4
b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHplcm8uZ2V0KCkp
OwotICAgICAgICAgICAgaWYgKGNsaXBwZWRXaWR0aCA+IDAgJiYgY2xpcHBlZEhlaWdodCA+IDAp
Ci0gICAgICAgICAgICAgICAgbV9jb250ZXh0LT5jb3B5VGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxl
dmVsLCB4b2Zmc2V0ICsgY2xpcHBlZFggLSB4LCB5b2Zmc2V0ICsgY2xpcHBlZFkgLSB5LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpcHBlZFgsIGNsaXBw
ZWRZLCBjbGlwcGVkV2lkdGgsIGNsaXBwZWRIZWlnaHQpOwotICAgICAgICB9IGVsc2UKLSAgICAg
ICAgICAgIG1fY29udGV4dC0+Y29weVRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNl
dCwgeW9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCk7Ci0gICAgfQorICAgICAgICAgICAgbWVt
c2V0KHplcm8uZ2V0KCksIDAsIHNpemUpOworICAgICAgICB9CisgICAgICAgIG1fY29udGV4dC0+
dGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVp
Z2h0LCBmb3JtYXQsIHR5cGUsIHplcm8uZ2V0KCkpOworICAgICAgICBpZiAoY2xpcHBlZFdpZHRo
ID4gMCAmJiBjbGlwcGVkSGVpZ2h0ID4gMCkKKyAgICAgICAgICAgIG1fY29udGV4dC0+Y29weVRl
eFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCArIGNsaXBwZWRYIC0geCwgeW9mZnNl
dCArIGNsaXBwZWRZIC0geSwgY2xpcHBlZFgsIGNsaXBwZWRZLCBjbGlwcGVkV2lkdGgsIGNsaXBw
ZWRIZWlnaHQpOworICAgIH0gZWxzZQorICAgICAgICBtX2NvbnRleHQtPmNvcHlUZXhTdWJJbWFn
ZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHgsIHksIHdpZHRoLCBoZWlnaHQp
OwogfQogCiBSZWZQdHI8V2ViR0xCdWZmZXI+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNy
ZWF0ZUJ1ZmZlcigpCkBAIC0xODE4LDI5ICsxODA2LDIyIEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6dmFsaWRhdGVEcmF3QXJyYXlzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwg
R0MzCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAoIWlzRXJyb3JHZW5l
cmF0ZWRPbk91dE9mQm91bmRzQWNjZXNzZXMoKSkgewotICAgICAgICAvLyBFbnN1cmUgd2UgaGF2
ZSBhIHZhbGlkIHJlbmRlcmluZyBzdGF0ZQotICAgICAgICBDaGVja2VkPEdDM0RpbnQsIFJlY29y
ZE92ZXJmbG93PiBjaGVja2VkRmlyc3QoZmlyc3QpOwotICAgICAgICBDaGVja2VkPEdDM0RpbnQs
IFJlY29yZE92ZXJmbG93PiBjaGVja2VkQ291bnQoY291bnQpOwotICAgICAgICBDaGVja2VkPEdD
M0RpbnQsIFJlY29yZE92ZXJmbG93PiBjaGVja2VkU3VtID0gY2hlY2tlZEZpcnN0ICsgY2hlY2tl
ZENvdW50OwotICAgICAgICBDaGVja2VkPEdDM0RpbnQsIFJlY29yZE92ZXJmbG93PiBjaGVja2Vk
UHJpbWl0aXZlQ291bnQocHJpbWl0aXZlQ291bnQpOwotICAgICAgICBpZiAoY2hlY2tlZFN1bS5o
YXNPdmVyZmxvd2VkKCkgfHwgY2hlY2tlZFByaW1pdGl2ZUNvdW50Lmhhc092ZXJmbG93ZWQoKSB8
fCAhdmFsaWRhdGVWZXJ0ZXhBdHRyaWJ1dGVzKGNoZWNrZWRTdW0udW5zYWZlR2V0KCksIGNoZWNr
ZWRQcmltaXRpdmVDb3VudC51bnNhZmVHZXQoKSkpIHsKLSAgICAgICAgICAgIHN5bnRoZXNpemVH
TEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTiwgZnVuY3Rpb25OYW1l
LCAiYXR0ZW1wdCB0byBhY2Nlc3Mgb3V0IG9mIGJvdW5kcyBhcnJheXMiKTsKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBpZiAoIXZhbGlkYXRlU2ltdWxhdGVk
VmVydGV4QXR0cmliMChjaGVja2VkU3VtLnVuc2FmZUdldCgpIC0gMSkpIHsKLSAgICAgICAgICAg
IHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTiwg
ZnVuY3Rpb25OYW1lLCAiYXR0ZW1wdCB0byBhY2Nlc3Mgb3V0c2lkZSB0aGUgYm91bmRzIG9mIHRo
ZSBzaW11bGF0ZWQgdmVydGV4QXR0cmliMCBhcnJheSIpOwotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKCF2YWxpZGF0ZVZlcnRl
eEF0dHJpYnV0ZXMoMCkpIHsKLSAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNz
Q29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTiwgZnVuY3Rpb25OYW1lLCAiYXR0cmlicyBub3Qg
c2V0dXAgY29ycmVjdGx5Iik7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0K
KyAgICAvLyBFbnN1cmUgd2UgaGF2ZSBhIHZhbGlkIHJlbmRlcmluZyBzdGF0ZQorICAgIENoZWNr
ZWQ8R0MzRGludCwgUmVjb3JkT3ZlcmZsb3c+IGNoZWNrZWRGaXJzdChmaXJzdCk7CisgICAgQ2hl
Y2tlZDxHQzNEaW50LCBSZWNvcmRPdmVyZmxvdz4gY2hlY2tlZENvdW50KGNvdW50KTsKKyAgICBD
aGVja2VkPEdDM0RpbnQsIFJlY29yZE92ZXJmbG93PiBjaGVja2VkU3VtID0gY2hlY2tlZEZpcnN0
ICsgY2hlY2tlZENvdW50OworICAgIENoZWNrZWQ8R0MzRGludCwgUmVjb3JkT3ZlcmZsb3c+IGNo
ZWNrZWRQcmltaXRpdmVDb3VudChwcmltaXRpdmVDb3VudCk7CisgICAgaWYgKGNoZWNrZWRTdW0u
aGFzT3ZlcmZsb3dlZCgpIHx8IGNoZWNrZWRQcmltaXRpdmVDb3VudC5oYXNPdmVyZmxvd2VkKCkg
fHwgIXZhbGlkYXRlVmVydGV4QXR0cmlidXRlcyhjaGVja2VkU3VtLnVuc2FmZUdldCgpLCBjaGVj
a2VkUHJpbWl0aXZlQ291bnQudW5zYWZlR2V0KCkpKSB7CisgICAgICAgIHN5bnRoZXNpemVHTEVy
cm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTiwgZnVuY3Rpb25OYW1lLCAi
YXR0ZW1wdCB0byBhY2Nlc3Mgb3V0IG9mIGJvdW5kcyBhcnJheXMiKTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKyAgICBpZiAoIXZhbGlkYXRlU2ltdWxhdGVkVmVydGV4QXR0cmliMChj
aGVja2VkU3VtLnVuc2FmZUdldCgpIC0gMSkpIHsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3Io
R3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OLCBmdW5jdGlvbk5hbWUsICJhdHRl
bXB0IHRvIGFjY2VzcyBvdXRzaWRlIHRoZSBib3VuZHMgb2YgdGhlIHNpbXVsYXRlZCB2ZXJ0ZXhB
dHRyaWIwIGFycmF5Iik7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBjb25z
dCBjaGFyKiByZWFzb24gPSAiZnJhbWVidWZmZXIgaW5jb21wbGV0ZSI7Ci0gICAgaWYgKG1fZnJh
bWVidWZmZXJCaW5kaW5nICYmICFtX2ZyYW1lYnVmZmVyQmluZGluZy0+b25BY2Nlc3MoZ3JhcGhp
Y3NDb250ZXh0M0QoKSwgIWlzUmVzb3VyY2VTYWZlKCksICZyZWFzb24pKSB7CisgICAgaWYgKG1f
ZnJhbWVidWZmZXJCaW5kaW5nICYmICFtX2ZyYW1lYnVmZmVyQmluZGluZy0+b25BY2Nlc3MoZ3Jh
cGhpY3NDb250ZXh0M0QoKSwgJnJlYXNvbikpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3Io
R3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OLCBmdW5jdGlv
bk5hbWUsIHJlYXNvbik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0xODg5LDQ0
ICsxODcwLDM2IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVEcmF3
RWxlbWVudHMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHCiAgICAgICAgIHN5bnRoZXNpemVH
TEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTiwgZnVuY3Rpb25OYW1l
LCAibm8gRUxFTUVOVF9BUlJBWV9CVUZGRVIgYm91bmQiKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KKworICAgIC8vIEVuc3VyZSB3ZSBoYXZlIGEgdmFsaWQgcmVuZGVyaW5nIHN0YXRl
CisgICAgaWYgKCF2YWxpZGF0ZUVsZW1lbnRBcnJheVNpemUoY291bnQsIHR5cGUsIHN0YXRpY19j
YXN0PEdDM0RpbnRwdHI+KG9mZnNldCkpKSB7CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdy
YXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTiwgZnVuY3Rpb25OYW1lLCAicmVxdWVz
dCBvdXQgb2YgYm91bmRzIGZvciBjdXJyZW50IEVMRU1FTlRfQVJSQVlfQlVGRkVSIik7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgaWYgKCFjb3VudCkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIAotICAgIGlmICghaXNFcnJvckdlbmVyYXRlZE9uT3V0T2ZCb3VuZHNBY2Nl
c3NlcygpKSB7Ci0gICAgICAgIC8vIEVuc3VyZSB3ZSBoYXZlIGEgdmFsaWQgcmVuZGVyaW5nIHN0
YXRlCi0gICAgICAgIGlmICghdmFsaWRhdGVFbGVtZW50QXJyYXlTaXplKGNvdW50LCB0eXBlLCBz
dGF0aWNfY2FzdDxHQzNEaW50cHRyPihvZmZzZXQpKSkgewotICAgICAgICAgICAgc3ludGhlc2l6
ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OLCBmdW5jdGlvbk5h
bWUsICJyZXF1ZXN0IG91dCBvZiBib3VuZHMgZm9yIGN1cnJlbnQgRUxFTUVOVF9BUlJBWV9CVUZG
RVIiKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBpZiAo
IWNvdW50KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAKLSAgICAgICAgQ2hl
Y2tlZDxHQzNEaW50LCBSZWNvcmRPdmVyZmxvdz4gY2hlY2tlZENvdW50KGNvdW50KTsKLSAgICAg
ICAgQ2hlY2tlZDxHQzNEaW50LCBSZWNvcmRPdmVyZmxvdz4gY2hlY2tlZFByaW1pdGl2ZUNvdW50
KHByaW1pdGl2ZUNvdW50KTsKLSAgICAgICAgaWYgKGNoZWNrZWRDb3VudC5oYXNPdmVyZmxvd2Vk
KCkgfHwgY2hlY2tlZFByaW1pdGl2ZUNvdW50Lmhhc092ZXJmbG93ZWQoKSkgeworICAgIENoZWNr
ZWQ8R0MzRGludCwgUmVjb3JkT3ZlcmZsb3c+IGNoZWNrZWRDb3VudChjb3VudCk7CisgICAgQ2hl
Y2tlZDxHQzNEaW50LCBSZWNvcmRPdmVyZmxvdz4gY2hlY2tlZFByaW1pdGl2ZUNvdW50KHByaW1p
dGl2ZUNvdW50KTsKKyAgICBpZiAoY2hlY2tlZENvdW50Lmhhc092ZXJmbG93ZWQoKSB8fCBjaGVj
a2VkUHJpbWl0aXZlQ291bnQuaGFzT3ZlcmZsb3dlZCgpKSB7CisgICAgICAgIHN5bnRoZXNpemVH
TEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTiwgZnVuY3Rpb25OYW1l
LCAiYXR0ZW1wdCB0byBhY2Nlc3Mgb3V0IG9mIGJvdW5kcyBhcnJheXMiKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICBpZiAoIXZhbGlkYXRlSW5kZXhBcnJheUNvbnNl
cnZhdGl2ZSh0eXBlLCBudW1FbGVtZW50cykgfHwgIXZhbGlkYXRlVmVydGV4QXR0cmlidXRlcyhu
dW1FbGVtZW50cywgY2hlY2tlZFByaW1pdGl2ZUNvdW50LnVuc2FmZUdldCgpKSkgeworICAgICAg
ICBpZiAoIXZhbGlkYXRlSW5kZXhBcnJheVByZWNpc2UoY2hlY2tlZENvdW50LnVuc2FmZUdldCgp
LCB0eXBlLCBzdGF0aWNfY2FzdDxHQzNEaW50cHRyPihvZmZzZXQpLCBudW1FbGVtZW50cykgfHwg
IXZhbGlkYXRlVmVydGV4QXR0cmlidXRlcyhudW1FbGVtZW50cywgY2hlY2tlZFByaW1pdGl2ZUNv
dW50LnVuc2FmZUdldCgpKSkgewogICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OLCBmdW5jdGlvbk5hbWUsICJhdHRlbXB0IHRv
IGFjY2VzcyBvdXQgb2YgYm91bmRzIGFycmF5cyIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAoIXZhbGlkYXRlSW5kZXhBcnJheUNv
bnNlcnZhdGl2ZSh0eXBlLCBudW1FbGVtZW50cykgfHwgIXZhbGlkYXRlVmVydGV4QXR0cmlidXRl
cyhudW1FbGVtZW50cywgY2hlY2tlZFByaW1pdGl2ZUNvdW50LnVuc2FmZUdldCgpKSkgewotICAg
ICAgICAgICAgaWYgKCF2YWxpZGF0ZUluZGV4QXJyYXlQcmVjaXNlKGNoZWNrZWRDb3VudC51bnNh
ZmVHZXQoKSwgdHlwZSwgc3RhdGljX2Nhc3Q8R0MzRGludHB0cj4ob2Zmc2V0KSwgbnVtRWxlbWVu
dHMpIHx8ICF2YWxpZGF0ZVZlcnRleEF0dHJpYnV0ZXMobnVtRWxlbWVudHMsIGNoZWNrZWRQcmlt
aXRpdmVDb3VudC51bnNhZmVHZXQoKSkpIHsKLSAgICAgICAgICAgICAgICBzeW50aGVzaXplR0xF
cnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwg
ImF0dGVtcHQgdG8gYWNjZXNzIG91dCBvZiBib3VuZHMgYXJyYXlzIik7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYg
KCF2YWxpZGF0ZVNpbXVsYXRlZFZlcnRleEF0dHJpYjAobnVtRWxlbWVudHMpKSB7Ci0gICAgICAg
ICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJ
T04sIGZ1bmN0aW9uTmFtZSwgImF0dGVtcHQgdG8gYWNjZXNzIG91dHNpZGUgdGhlIGJvdW5kcyBv
ZiB0aGUgc2ltdWxhdGVkIHZlcnRleEF0dHJpYjAgYXJyYXkiKTsKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgfQorICAgIH0KIAotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmICgh
dmFsaWRhdGVWZXJ0ZXhBdHRyaWJ1dGVzKDApKSB7Ci0gICAgICAgICAgICBzeW50aGVzaXplR0xF
cnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwg
ImF0dHJpYnMgbm90IHNldHVwIGNvcnJlY3RseSIpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICB9CisgICAgaWYgKCF2YWxpZGF0ZVNpbXVsYXRlZFZlcnRleEF0dHJpYjAobnVt
RWxlbWVudHMpKSB7CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNE
OjpJTlZBTElEX09QRVJBVElPTiwgZnVuY3Rpb25OYW1lLCAiYXR0ZW1wdCB0byBhY2Nlc3Mgb3V0
c2lkZSB0aGUgYm91bmRzIG9mIHRoZSBzaW11bGF0ZWQgdmVydGV4QXR0cmliMCBhcnJheSIpOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIAogICAgIGNvbnN0IGNoYXIqIHJlYXNv
biA9ICJmcmFtZWJ1ZmZlciBpbmNvbXBsZXRlIjsKLSAgICBpZiAobV9mcmFtZWJ1ZmZlckJpbmRp
bmcgJiYgIW1fZnJhbWVidWZmZXJCaW5kaW5nLT5vbkFjY2VzcyhncmFwaGljc0NvbnRleHQzRCgp
LCAhaXNSZXNvdXJjZVNhZmUoKSwgJnJlYXNvbikpIHsKKyAgICBpZiAobV9mcmFtZWJ1ZmZlckJp
bmRpbmcgJiYgIW1fZnJhbWVidWZmZXJCaW5kaW5nLT5vbkFjY2VzcyhncmFwaGljc0NvbnRleHQz
RCgpLCAmcmVhc29uKSkgewogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRl
eHQzRDo6SU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwgcmVhc29u
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTMwMTQsNyArMjk4Nyw3IEBAIHZv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cmVhZFBpeGVscyhHQzNEaW50IHgsIEdDM0Rp
bnQgeSwgR0MzRHNpemVpIHdpZHRoCiAgICAgR0MzRGVudW0gaW50ZXJuYWxGb3JtYXQgPSAwOwog
ICAgIGlmIChtX2ZyYW1lYnVmZmVyQmluZGluZykgewogICAgICAgICBjb25zdCBjaGFyKiByZWFz
b24gPSAiZnJhbWVidWZmZXIgaW5jb21wbGV0ZSI7Ci0gICAgICAgIGlmICghbV9mcmFtZWJ1ZmZl
ckJpbmRpbmctPm9uQWNjZXNzKGdyYXBoaWNzQ29udGV4dDNEKCksICFpc1Jlc291cmNlU2FmZSgp
LCAmcmVhc29uKSkgeworICAgICAgICBpZiAoIW1fZnJhbWVidWZmZXJCaW5kaW5nLT5vbkFjY2Vz
cyhncmFwaGljc0NvbnRleHQzRCgpLCAmcmVhc29uKSkgewogICAgICAgICAgICAgc3ludGhlc2l6
ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9O
LCAicmVhZFBpeGVscyIsIHJlYXNvbik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
QEAgLTMyODMsMTggKzMyNTYsOCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnRl
eEltYWdlMkRCYXNlKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgRwogICAgIEFTU0VS
VCh0ZXgpOwogICAgIEFTU0VSVCh2YWxpZGF0ZU5QT1RUZXh0dXJlTGV2ZWwod2lkdGgsIGhlaWdo
dCwgbGV2ZWwsICJ0ZXhJbWFnZTJEIikpOwogICAgIGlmICghcGl4ZWxzKSB7Ci0gICAgICAgIC8v
IE5vdGU6IENocm9taXVtJ3MgT3BlbkdMIGltcGxlbWVudGF0aW9uIGNsZWFycyB0ZXh0dXJlcyBh
bmQgaXNSZXNvdXJjZVNhZmUoKSBpcyB0aGVyZWZvcmUgdHJ1ZS4KLSAgICAgICAgLy8gRm9yIG90
aGVyIGltcGxlbWVudGF0aW9ucywgaWYgdGhleSBhcmUgdXNpbmcgQU5HTEVfZGVwdGhfdGV4dHVy
ZSwgQU5HTEUgZGVwdGggdGV4dHVyZXMKLSAgICAgICAgLy8gY2FuIG5vdCBiZSBjbGVhcmVkIHdp
dGggdGV4SW1hZ2UyRCBhbmQgbXVzdCBiZSBjbGVhcmVkIGJ5IGJpbmRpbmcgdG8gYW4gZmJvIGFu
ZCBjYWxsaW5nCi0gICAgICAgIC8vIGNsZWFyLgotICAgICAgICBpZiAoaXNSZXNvdXJjZVNhZmUo
KSkKLSAgICAgICAgICAgIG1fY29udGV4dC0+dGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRl
cm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIG51bGxwdHIp
OwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGJvb2wgc3VjY2VlZCA9IG1fY29udGV4dC0+
dGV4SW1hZ2UyRFJlc291cmNlU2FmZSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgd2lk
dGgsIGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib3JkZXIsIGZvcm1hdCwgdHlwZSwgbV91bnBhY2tBbGlnbm1lbnQp
OwotICAgICAgICAgICAgaWYgKCFzdWNjZWVkKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQorICAgICAgICBpZiAoIW1fY29udGV4dC0+dGV4SW1hZ2UyRFJlc291cmNlU2FmZSh0
YXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3Jt
YXQsIHR5cGUsIG1fdW5wYWNrQWxpZ25tZW50KSkKKyAgICAgICAgICAgIHJldHVybjsKICAgICB9
IGVsc2UgewogICAgICAgICBBU1NFUlQodmFsaWRhdGVTZXR0YWJsZVRleEludGVybmFsRm9ybWF0
KCJ0ZXhJbWFnZTJEIiwgaW50ZXJuYWxGb3JtYXQpKTsKICAgICAgICAgbV9jb250ZXh0LT5tb3Zl
RXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKTsKQEAgLTM5NzgsMjYgKzM5NDEsMjQgQEAgdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjb3B5VGV4SW1hZ2UyRChHQzNEZW51bSB0YXJn
ZXQsIEdDM0RpbnQgbGV2ZWwsIEcKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjb25zdCBj
aGFyKiByZWFzb24gPSAiZnJhbWVidWZmZXIgaW5jb21wbGV0ZSI7Ci0gICAgaWYgKG1fZnJhbWVi
dWZmZXJCaW5kaW5nICYmICFtX2ZyYW1lYnVmZmVyQmluZGluZy0+b25BY2Nlc3MoZ3JhcGhpY3ND
b250ZXh0M0QoKSwgIWlzUmVzb3VyY2VTYWZlKCksICZyZWFzb24pKSB7CisgICAgaWYgKG1fZnJh
bWVidWZmZXJCaW5kaW5nICYmICFtX2ZyYW1lYnVmZmVyQmluZGluZy0+b25BY2Nlc3MoZ3JhcGhp
Y3NDb250ZXh0M0QoKSwgJnJlYXNvbikpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OLCAiY29weVRleElt
YWdlMkQiLCByZWFzb24pOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNsZWFySWZDb21w
b3NpdGVkKCk7Ci0gICAgaWYgKGlzUmVzb3VyY2VTYWZlKCkpCisKKyAgICBHQzNEaW50IGNsaXBw
ZWRYLCBjbGlwcGVkWTsKKyAgICBHQzNEc2l6ZWkgY2xpcHBlZFdpZHRoLCBjbGlwcGVkSGVpZ2h0
OworICAgIGlmIChjbGlwMkQoeCwgeSwgd2lkdGgsIGhlaWdodCwgZ2V0Qm91bmRGcmFtZWJ1ZmZl
cldpZHRoKCksIGdldEJvdW5kRnJhbWVidWZmZXJIZWlnaHQoKSwgJmNsaXBwZWRYLCAmY2xpcHBl
ZFksICZjbGlwcGVkV2lkdGgsICZjbGlwcGVkSGVpZ2h0KSkgeworICAgICAgICBtX2NvbnRleHQt
PnRleEltYWdlMkRSZXNvdXJjZVNhZmUodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIHdp
ZHRoLCBoZWlnaHQsIGJvcmRlciwKKyAgICAgICAgICAgIGludGVybmFsRm9ybWF0LCBHcmFwaGlj
c0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgbV91bnBhY2tBbGlnbm1lbnQpOworICAgICAgICBp
ZiAoY2xpcHBlZFdpZHRoID4gMCAmJiBjbGlwcGVkSGVpZ2h0ID4gMCkgeworICAgICAgICAgICAg
bV9jb250ZXh0LT5jb3B5VGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBjbGlwcGVkWCAtIHgs
IGNsaXBwZWRZIC0geSwKKyAgICAgICAgICAgICAgICBjbGlwcGVkWCwgY2xpcHBlZFksIGNsaXBw
ZWRXaWR0aCwgY2xpcHBlZEhlaWdodCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UKICAgICAgICAg
bV9jb250ZXh0LT5jb3B5VGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwg
eCwgeSwgd2lkdGgsIGhlaWdodCwgYm9yZGVyKTsKLSAgICBlbHNlIHsKLSAgICAgICAgR0MzRGlu
dCBjbGlwcGVkWCwgY2xpcHBlZFk7Ci0gICAgICAgIEdDM0RzaXplaSBjbGlwcGVkV2lkdGgsIGNs
aXBwZWRIZWlnaHQ7Ci0gICAgICAgIGlmIChjbGlwMkQoeCwgeSwgd2lkdGgsIGhlaWdodCwgZ2V0
Qm91bmRGcmFtZWJ1ZmZlcldpZHRoKCksIGdldEJvdW5kRnJhbWVidWZmZXJIZWlnaHQoKSwgJmNs
aXBwZWRYLCAmY2xpcHBlZFksICZjbGlwcGVkV2lkdGgsICZjbGlwcGVkSGVpZ2h0KSkgewotICAg
ICAgICAgICAgbV9jb250ZXh0LT50ZXhJbWFnZTJEUmVzb3VyY2VTYWZlKHRhcmdldCwgbGV2ZWws
IGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsCi0gICAgICAgICAgICAgICAg
aW50ZXJuYWxGb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBtX3VucGFj
a0FsaWdubWVudCk7Ci0gICAgICAgICAgICBpZiAoY2xpcHBlZFdpZHRoID4gMCAmJiBjbGlwcGVk
SGVpZ2h0ID4gMCkgewotICAgICAgICAgICAgICAgIG1fY29udGV4dC0+Y29weVRleFN1YkltYWdl
MkQodGFyZ2V0LCBsZXZlbCwgY2xpcHBlZFggLSB4LCBjbGlwcGVkWSAtIHksCi0gICAgICAgICAg
ICAgICAgICAgIGNsaXBwZWRYLCBjbGlwcGVkWSwgY2xpcHBlZFdpZHRoLCBjbGlwcGVkSGVpZ2h0
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBtX2NvbnRleHQt
PmNvcHlUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCB4LCB5LCB3aWR0
aCwgaGVpZ2h0LCBib3JkZXIpOwotICAgIH0KKwogICAgIC8vIEZJWE1FOiBpZiB0aGUgZnJhbWVi
dWZmZXIgaXMgbm90IGNvbXBsZXRlLCBub25lIG9mIHRoZSBiZWxvdyBzaG91bGQgYmUgZXhlY3V0
ZWQuCiAgICAgdGV4LT5zZXRMZXZlbEluZm8odGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQs
IHdpZHRoLCBoZWlnaHQsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuaAppbmRleCA2NmRjMGQxOTU2Mzg1MjRhZWRkMWI0MDlmOGRlNGExYWIzM2EyN2I3Li4y
YjMxNmJkYjFkZmE4MjExZjk1MTE1ZGY0ZTMxNGE5ODYzZTgwYTljIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCkBA
IC0zNzEsMTAgKzM3MSw2IEBAIHByb3RlY3RlZDoKICAgICBib29sIGlzR0xFUzJDb21wbGlhbnQo
KSB7IHJldHVybiBtX2lzR0xFUzJDb21wbGlhbnQ7IH0KICAgICAvLyBRdWVyeSBpZiB0aGUgR0wg
aW1wbGVtZW50YXRpb24gaXMgTlBPVCBzdHJpY3QuCiAgICAgYm9vbCBpc0dMRVMyTlBPVFN0cmlj
dCgpIHsgcmV0dXJuIG1faXNHTEVTMk5QT1RTdHJpY3Q7IH0KLSAgICAvLyBRdWVyeSBpZiB0aGUg
R0wgaW1wbGVtZW50YXRpb24gZ2VuZXJhdGVzIGVycm9ycyBvbiBvdXQtb2YtYm91bmRzIGJ1ZmZl
ciBhY2Nlc3Nlcy4KLSAgICBib29sIGlzRXJyb3JHZW5lcmF0ZWRPbk91dE9mQm91bmRzQWNjZXNz
ZXMoKSB7IHJldHVybiBtX2lzRXJyb3JHZW5lcmF0ZWRPbk91dE9mQm91bmRzQWNjZXNzZXM7IH0K
LSAgICAvLyBRdWVyeSBpZiB0aGUgR0wgaW1wbGVtZW50YXRpb24gaW5pdGlhbGl6ZXMgdGV4dHVy
ZXMvcmVuZGVyYnVmZmVycyB0byAwLgotICAgIGJvb2wgaXNSZXNvdXJjZVNhZmUoKSB7IHJldHVy
biBtX2lzUmVzb3VyY2VTYWZlOyB9CiAgICAgLy8gUXVlcnkgaWYgZGVwdGhfc3RlbmNpbCBidWZm
ZXIgaXMgc3VwcG9ydGVkLgogICAgIGJvb2wgaXNEZXB0aFN0ZW5jaWxTdXBwb3J0ZWQoKSB7IHJl
dHVybiBtX2lzRGVwdGhTdGVuY2lsU3VwcG9ydGVkOyB9CiAKQEAgLTUzNiw4ICs1MzIsNiBAQCBw
cm90ZWN0ZWQ6CiAKICAgICBib29sIG1faXNHTEVTMkNvbXBsaWFudDsKICAgICBib29sIG1faXNH
TEVTMk5QT1RTdHJpY3Q7Ci0gICAgYm9vbCBtX2lzRXJyb3JHZW5lcmF0ZWRPbk91dE9mQm91bmRz
QWNjZXNzZXM7Ci0gICAgYm9vbCBtX2lzUmVzb3VyY2VTYWZlOwogICAgIGJvb2wgbV9pc0RlcHRo
U3RlbmNpbFN1cHBvcnRlZDsKICAgICBib29sIG1faXNSb2J1c3RuZXNzRVhUU3VwcG9ydGVkOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQzRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQzRC5jcHAKaW5kZXggNmVkZjdhZWY5YmNiNGI1ZWQ1OTZmNzJmNmNlZDBiZGVhNmY3NjAw
MC4uNmU5Mjc2MWQ0ZmUzZjdhZTdiOGYzMjkzNTIzZWJmZmFmYTRlZDIzMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNw
cApAQCAtMTQ3LDcgKzE0Nyw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OnRleEltYWdlMkRS
ZXNvdXJjZVNhZmUoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHCiB7CiAgICAgQVNT
RVJUKHVucGFja0FsaWdubWVudCA9PSAxIHx8IHVucGFja0FsaWdubWVudCA9PSAyIHx8IHVucGFj
a0FsaWdubWVudCA9PSA0IHx8IHVucGFja0FsaWdubWVudCA9PSA4KTsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8dW5zaWduZWQgY2hhcltdPiB6ZXJvOwotICAgIGlmICghaXNSZXNvdXJjZVNhZmUoKSAm
JiB3aWR0aCA+IDAgJiYgaGVpZ2h0ID4gMCkgeworICAgIGlmICh3aWR0aCA+IDAgJiYgaGVpZ2h0
ID4gMCkgewogICAgICAgICB1bnNpZ25lZCBpbnQgc2l6ZTsKICAgICAgICAgR0MzRGVudW0gZXJy
b3IgPSBjb21wdXRlSW1hZ2VTaXplSW5CeXRlcyhmb3JtYXQsIHR5cGUsIHdpZHRoLCBoZWlnaHQs
IHVucGFja0FsaWdubWVudCwgJnNpemUsIDApOwogICAgICAgICBpZiAoZXJyb3IgIT0gR3JhcGhp
Y3NDb250ZXh0M0Q6Ok5PX0VSUk9SKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAppbmRleCA0MTA2NjE3OTE1ZDg5ZDk2M2Vh
ZDVjYTIwNjdjMmQxNmRmMGVkMDI3Li5mYjA0YjViZmZmMjdlODI1YmRmMzMxMThlMTk5ZGU2NTc4
ZmZmNzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQzRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dDNELmgKQEAgLTEzMDYsNyArMTMwNiw2IEBAIHByaXZhdGU6CiAjZW5kaWYK
IAogICAgIGludCBtX2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0OwotICAgIGJvb2wgaXNS
ZXNvdXJjZVNhZmUoKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJldGFpblB0cjxXZWJH
TExheWVyPiBtX3dlYkdMTGF5ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3Bl
bkdMQ29tbW9uLmNwcAppbmRleCA1NWQ1YzY4ZGNlMmEzNmFhMDNhY2E4NzI5ZmVmNGVmN2Q0ODE3
NmE0Li4wNGU4NTIyMWRhZDdjYzFkNDBjZDg2NjE5NDdmZjhmN2RiZTE5NjNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
M0RPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKQEAgLTE1NiwxMSArMTU2
LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3Qg
Y2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW4KICAgICB9CiB9CiAKLWJvb2wgR3JhcGhpY3ND
b250ZXh0M0Q6OmlzUmVzb3VyY2VTYWZlKCkKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKEltYWdl
QnVmZmVyKiBpbWFnZUJ1ZmZlcikKIHsKICAgICBpbnQgcm93Qnl0ZXMgPSBtX2N1cnJlbnRXaWR0
aCAqIDQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294859</attachid>
            <date>2016-11-15 11:33:39 -0800</date>
            <delta_ts>2016-11-15 11:40:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164782-20161115113337.patch</filename>
            <type>text/plain</type>
            <size>32361</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4NzI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjczOTZiZWM3N2MyYmQw
ZTQ1NzQ0YzcxZTNmYjEzZTJhN2E0NjY5MC4uNDUzODFkZWIwODRlNjhjMGY5NzYzZTFjNjY0MTRl
ZDdjZWM4NGQzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE2LTExLTE1ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdMXSBS
ZW1vdmUgdW51c2VkIENocm9taXVtLXNwZWNpZmljIE9wZW5HTCBleHRlbnNpb25zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ3ODIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVj
YXVzZSB0aGVyZSBpcyBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmNvcHlCdWZmZXJTdWJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbik6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21w
cmVzc2VkVGV4dHVyZVMzVEM6OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xEZXB0aFRleHR1cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xEZXB0aFRleHR1cmU6
OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTERyYXdCdWZmZXJzOjpzYXRpc2ZpZXNXZWJHTFJlcXVp
cmVtZW50cyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjpvbkFjY2Vzcyk6CisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmdldEV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmNsZWFyKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnNldHVwRmxhZ3MpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6YnVmZmVyRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpidWZmZXJTdWJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OmNvcHlUZXhTdWJJbWFnZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlRHJhd0FycmF5cyk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZURyYXdFbGVtZW50cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpyZWFkUGl4ZWxzKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleEltYWdlMkRC
YXNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNvcHlU
ZXhJbWFnZTJEKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjppc0dM
RVMyTlBPVFN0cmljdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjppc0Vycm9yR2VuZXJhdGVkT25PdXRPZkJvdW5kc0FjY2Vzc2VzKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmlzUmVzb3VyY2VTYWZl
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQz
RC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dGV4SW1hZ2UyRFJl
c291cmNlU2FmZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
M0QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
M0RPcGVuR0xDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OmlzUmVzb3VyY2VTYWZlKTogRGVsZXRlZC4KKwogMjAxNi0xMS0xNCAgQWxleCBDaHJpc3RlbnNl
biAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIE1vdmUgU2VjdXJpdHlPcmln
aW46OmNyZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIgdG8gU2VjdXJpdHlPcmlnaW5EYXRhCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRl
eHQuY3BwCmluZGV4IGVlMTQwYTgzNzY2NmQ5Nzc1YTNlZTc4ODliYjc2MDM5MTY0ODZkYTAuLjZk
YWQwYzQ0MmM2ZTAwZWJiMTQ1YzYwM2RjMWVmNDRhZDJmYmVjYTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0x
OTgsMTEgKzE5OCw5IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y29weUJ1ZmZlclN1
YkRhdGEoR0MzRGVudW0gcmVhZFRhcmdldCwgR0MzRGVudW0gd3JpCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBpZiAoIXRoaXMtPmlzRXJyb3JHZW5lcmF0ZWRPbk91dE9mQm91bmRzQWNj
ZXNzZXMoKSkgewotICAgICAgICBpZiAoIXdyaXRlQnVmZmVyLT5hc3NvY2lhdGVDb3B5QnVmZmVy
U3ViRGF0YSgqcmVhZEJ1ZmZlciwgY2hlY2tlZFJlYWRPZmZzZXQudW5zYWZlR2V0KCksIGNoZWNr
ZWRXcml0ZU9mZnNldC51bnNhZmVHZXQoKSwgY2hlY2tlZFNpemUudW5zYWZlR2V0KCkpKSB7Ci0g
ICAgICAgICAgICB0aGlzLT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5W
QUxJRF9WQUxVRSwgImNvcHlCdWZmZXJTdWJEYXRhIiwgIm9mZnNldCBvdXQgb2YgcmFuZ2UiKTsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAgIGlmICghd3JpdGVCdWZmZXItPmFz
c29jaWF0ZUNvcHlCdWZmZXJTdWJEYXRhKCpyZWFkQnVmZmVyLCBjaGVja2VkUmVhZE9mZnNldC51
bnNhZmVHZXQoKSwgY2hlY2tlZFdyaXRlT2Zmc2V0LnVuc2FmZUdldCgpLCBjaGVja2VkU2l6ZS51
bnNhZmVHZXQoKSkpIHsKKyAgICAgICAgdGhpcy0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3ND
b250ZXh0M0Q6OklOVkFMSURfVkFMVUUsICJjb3B5QnVmZmVyU3ViRGF0YSIsICJvZmZzZXQgb3V0
IG9mIHJhbmdlIik7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBtX2NvbnRleHQtPm1v
dmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpOwpAQCAtNDQwLDcgKzQzOCw3IEBAIHZvaWQg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y2xlYXIoR0MzRGJpdGZpZWxkIG1hc2spCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgY29uc3QgY2hhciogcmVhc29uID0gImZyYW1lYnVmZmVyIGlu
Y29tcGxldGUiOwotICAgIGlmIChtX2ZyYW1lYnVmZmVyQmluZGluZyAmJiAhbV9mcmFtZWJ1ZmZl
ckJpbmRpbmctPm9uQWNjZXNzKGdyYXBoaWNzQ29udGV4dDNEKCksICFpc1Jlc291cmNlU2FmZSgp
LCAmcmVhc29uKSkgeworICAgIGlmIChtX2ZyYW1lYnVmZmVyQmluZGluZyAmJiAhbV9mcmFtZWJ1
ZmZlckJpbmRpbmctPm9uQWNjZXNzKGdyYXBoaWNzQ29udGV4dDNEKCksICZyZWFzb24pKSB7CiAg
ICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0ZSQU1F
QlVGRkVSX09QRVJBVElPTiwgImNsZWFyIiwgcmVhc29uKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KQEAgLTkxNCwxMCArOTEyLDggQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMMlJlbmRlcmluZ0Nv
bnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgfQogICAgIGlmIChl
cXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJXRUJHTF9kZXB0aF90ZXh0dXJlIikKICAgICAg
ICAgJiYgV2ViR0xEZXB0aFRleHR1cmU6OnN1cHBvcnRlZChncmFwaGljc0NvbnRleHQzRCgpKSkg
ewotICAgICAgICBpZiAoIW1fd2ViZ2xEZXB0aFRleHR1cmUpIHsKLSAgICAgICAgICAgIG1fY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5lbnN1cmVFbmFibGVkKCJHTF9DSFJPTUlVTV9kZXB0aF90
ZXh0dXJlIik7CisgICAgICAgIGlmICghbV93ZWJnbERlcHRoVGV4dHVyZSkKICAgICAgICAgICAg
IG1fd2ViZ2xEZXB0aFRleHR1cmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMRGVwdGhUZXh0dXJl
Pih0aGlzKTsKLSAgICAgICAgfQogICAgICAgICByZXR1cm4gbV93ZWJnbERlcHRoVGV4dHVyZS5n
ZXQoKTsKICAgICB9CiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIldFQkdM
X2RlYnVnX3JlbmRlcmVyX2luZm8iKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwCmluZGV4IDQyYmNkMDgx
MGM5NGM1YmM1OWMxZjdhYTVlZmQ5MGYyYmVhZDI0YWIuLjgwNjk3Yzk4NTc2Mzc2NzM3YTJhZDRi
NDQ4ZGE5ZTQyMjAxZTZhOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHAKQEAgLTU2LDkgKzU2LDcgQEAg
Ym9vbCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQzo6c3VwcG9ydGVkKFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UqIGNvbnRleHQpCiB7CiAgICAgRXh0ZW5zaW9uczNEKiBleHRlbnNpb25zID0g
Y29udGV4dC0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+Z2V0RXh0ZW5zaW9ucygpOwogICAgIHJldHVy
biBleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0YyIp
Ci0gICAgICAgIHx8IChleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfRVhUX3RleHR1cmVfY29tcHJl
c3Npb25fZHh0MSIpCi0gICAgICAgICAgICAmJiBleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfQ0hS
T01JVU1fdGV4dHVyZV9jb21wcmVzc2lvbl9keHQzIikKLSAgICAgICAgICAgICYmIGV4dGVuc2lv
bnMtPnN1cHBvcnRzKCJHTF9DSFJPTUlVTV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDUiKSk7Cisg
ICAgICAgIHx8IGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lv
bl9keHQxIik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmNwcAppbmRleCA4ZmQ5MDc5MzVmM2Ix
MWNkMDA1MWIwMjAxMWNiNWZiMDUyYjIyZTIzLi44YTFkMTY0Njk3NzhjMDJlMzQ5ZmU3MGIwZWIy
YWY0MTU0MDIyN2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TERlcHRoVGV4dHVyZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xE
ZXB0aFRleHR1cmUuY3BwCkBAIC01MCw4ICs1MCw3IEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNp
b25OYW1lIFdlYkdMRGVwdGhUZXh0dXJlOjpnZXROYW1lKCkgY29uc3QKIGJvb2wgV2ViR0xEZXB0
aFRleHR1cmU6OnN1cHBvcnRlZChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKIHsKICAgICBF
eHRlbnNpb25zM0QqIGV4dGVuc2lvbnMgPSBjb250ZXh0LT5nZXRFeHRlbnNpb25zKCk7Ci0gICAg
cmV0dXJuIGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9DSFJPTUlVTV9kZXB0aF90ZXh0dXJlIikK
LSAgICAgICAgfHwgZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX09FU19kZXB0aF90ZXh0dXJlIikK
KyAgICByZXR1cm4gZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX09FU19kZXB0aF90ZXh0dXJlIikK
ICAgICAgICAgfHwgZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0FSQl9kZXB0aF90ZXh0dXJlIik7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1
ZmZlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5j
cHAKaW5kZXggN2JjNzJhNmU1OTYzMjE1MWQyYWM0NGE1OGU4ZTc1ZjcwOTY1NTUzOC4uY2I2YjMz
NzBmMjQ5NDA3Y2I1YmI0ODQ3YWRiNmIwMzU3OTMyMDU2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHAKQEAgLTEwNCw4ICsxMDQsNyBAQCBi
b29sIFdlYkdMRHJhd0J1ZmZlcnM6OnNhdGlzZmllc1dlYkdMUmVxdWlyZW1lbnRzKFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UqIHdlYgogICAgIGNvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFw
aGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIGZibyk7CiAKICAgICBjb25zdCB1bnNpZ25lZCBj
aGFyIGJ1ZmZlcls0XSA9IHsgMCwgMCwgMCwgMCB9OyAvLyB0ZXh0dXJlcyBhcmUgcmVxdWlyZWQg
dG8gYmUgaW5pdGlhbGl6ZWQgZm9yIG90aGVyIHBvcnRzLgotICAgIGJvb2wgc3VwcG9ydHNEZXB0
aCA9IChjb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9DSFJPTUlVTV9kZXB0
aF90ZXh0dXJlIikKLSAgICAgICAgfHwgY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0
cygiR0xfT0VTX2RlcHRoX3RleHR1cmUiKQorICAgIGJvb2wgc3VwcG9ydHNEZXB0aCA9IChjb250
ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfZGVwdGhfdGV4dHVyZSIpCiAg
ICAgICAgIHx8IGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX0FSQl9kZXB0
aF90ZXh0dXJlIikpOwogICAgIGJvb2wgc3VwcG9ydHNEZXB0aFN0ZW5jaWwgPSAoY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIikK
ICAgICAgICAgfHwgY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX3Bh
Y2tlZF9kZXB0aF9zdGVuY2lsIikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTEZyYW1lYnVmZmVyLmNwcAppbmRleCA5NjFmYmFlODFiZmQ0YmJlNjE0MWNjNTRmMTViYzY4
NzNlYzBjODg1Li5kMzgwMWY3Y2RkNTA4MjM3OTM1YjczOWE0OWVmYzhlNWViNzc5OTJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcApAQCAt
NDc5LDEzICs0NzksMTEgQEAgR0MzRGVudW0gV2ViR0xGcmFtZWJ1ZmZlcjo6Y2hlY2tTdGF0dXMo
Y29uc3QgY2hhcioqIHJlYXNvbikgY29uc3QKICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0M0Q6
OkZSQU1FQlVGRkVSX0NPTVBMRVRFOwogfQogCi1ib29sIFdlYkdMRnJhbWVidWZmZXI6Om9uQWNj
ZXNzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2QsIGJvb2wgbmVlZFRvSW5pdGlhbGl6ZUF0
dGFjaG1lbnRzLCBjb25zdCBjaGFyKiogcmVhc29uKQorYm9vbCBXZWJHTEZyYW1lYnVmZmVyOjpv
bkFjY2VzcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNkLCBjb25zdCBjaGFyKiogcmVhc29u
KQogewogICAgIGlmIChjaGVja1N0YXR1cyhyZWFzb24pICE9IEdyYXBoaWNzQ29udGV4dDNEOjpG
UkFNRUJVRkZFUl9DT01QTEVURSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChuZWVk
VG9Jbml0aWFsaXplQXR0YWNobWVudHMpCi0gICAgICAgIHJldHVybiBpbml0aWFsaXplQXR0YWNo
bWVudHMoY29udGV4dDNkLCByZWFzb24pOwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBp
bml0aWFsaXplQXR0YWNobWVudHMoY29udGV4dDNkLCByZWFzb24pOwogfQogCiBib29sIFdlYkdM
RnJhbWVidWZmZXI6Omhhc1N0ZW5jaWxCdWZmZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oCmluZGV4IDVhYzRmYjdlOTFlMTIwZGUzZGRi
ODk5YWRjMWNmODlkNDE3ODkzOWQuLjIxZWFlMTFhNTVlNGU3MzAxYTZhODNkODNiMDdiYzU3NDc5
OThmN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVi
dWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVy
LmgKQEAgLTc4LDcgKzc4LDcgQEAgcHVibGljOgogICAgIC8vIFJldHVybiBmYWxzZSBpZiB0aGUg
ZnJhbWVidWZmZXIgaXMgaW5jb21wbGV0ZTsgb3RoZXJ3aXNlIGluaXRpYWxpemUKICAgICAvLyB0
aGUgYnVmZmVycyBpZiB0aGV5IGhhdmVuJ3QgYmVlbiBpbml0aWFsaXplZCBhbmQKICAgICAvLyBu
ZWVkVG9Jbml0aWFsaXplQXR0YWNobWVudHMgaXMgdHJ1ZS4KLSAgICBib29sIG9uQWNjZXNzKEdy
YXBoaWNzQ29udGV4dDNEKiwgYm9vbCBuZWVkVG9Jbml0aWFsaXplQXR0YWNobWVudHMsIGNvbnN0
IGNoYXIqKiByZWFzb24pOworICAgIGJvb2wgb25BY2Nlc3MoR3JhcGhpY3NDb250ZXh0M0QqLCBj
b25zdCBjaGFyKiogcmVhc29uKTsKIAogICAgIC8vIFNvZnR3YXJlIHZlcnNpb24gb2YgZ2xDaGVj
a0ZyYW1lYnVmZmVyU3RhdHVzKCksIGV4Y2VwdCB0aGF0IHdoZW4KICAgICAvLyBGUkFNRUJVRkZF
Ul9DT01QTEVURSBpcyByZXR1cm5lZCwgaXQgaXMgc3RpbGwgcG9zc2libGUgZm9yCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcApp
bmRleCA5NmI4MDhkNDllMDg2YzlmNWI3ODQwZWIwZDZlYzJhOTI1MThjNjdhLi4zMThjOWJmZWZl
OTAwZmJkYzkwN2Q5MTlhNDViNzI2YTNlZjdjMWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTIxMCwxMCArMjEw
LDggQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9u
KGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICB9CiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNh
c2UobmFtZSwgIldFQkdMX2RlcHRoX3RleHR1cmUiKQogICAgICAgICAmJiBXZWJHTERlcHRoVGV4
dHVyZTo6c3VwcG9ydGVkKGdyYXBoaWNzQ29udGV4dDNEKCkpKSB7Ci0gICAgICAgIGlmICghbV93
ZWJnbERlcHRoVGV4dHVyZSkgewotICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25z
KCktPmVuc3VyZUVuYWJsZWQoIkdMX0NIUk9NSVVNX2RlcHRoX3RleHR1cmUiKTsKKyAgICAgICAg
aWYgKCFtX3dlYmdsRGVwdGhUZXh0dXJlKQogICAgICAgICAgICAgbV93ZWJnbERlcHRoVGV4dHVy
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xEZXB0aFRleHR1cmU+KHRoaXMpOwotICAgICAgICB9
CiAgICAgICAgIHJldHVybiBtX3dlYmdsRGVwdGhUZXh0dXJlLmdldCgpOwogICAgIH0KICAgICBp
ZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiV0VCR0xfZHJhd19idWZmZXJzIikgJiYg
c3VwcG9ydHNEcmF3QnVmZmVycygpKSB7CkBAIC00NTYsNyArNDU0LDcgQEAgdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OmNsZWFyKEdDM0RiaXRmaWVsZCBtYXNrKQogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIGNvbnN0IGNoYXIqIHJlYXNvbiA9ICJmcmFtZWJ1ZmZlciBpbmNvbXBsZXRl
IjsKLSAgICBpZiAobV9mcmFtZWJ1ZmZlckJpbmRpbmcgJiYgIW1fZnJhbWVidWZmZXJCaW5kaW5n
LT5vbkFjY2VzcyhncmFwaGljc0NvbnRleHQzRCgpLCAhaXNSZXNvdXJjZVNhZmUoKSwgJnJlYXNv
bikpIHsKKyAgICBpZiAobV9mcmFtZWJ1ZmZlckJpbmRpbmcgJiYgIW1fZnJhbWVidWZmZXJCaW5k
aW5nLT5vbkFjY2VzcyhncmFwaGljc0NvbnRleHQzRCgpLCAmcmVhc29uKSkgewogICAgICAgICBz
eW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9GUkFNRUJVRkZFUl9P
UEVSQVRJT04sICJjbGVhciIsIHJlYXNvbik7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuY3BwCmluZGV4IDJlYjkyODFkMmNjZTc0YjE4MzI4MTUxN2ZlMzg0ZTQ4ZTA4YTgwMjgu
LjQ5OWZmMzFkOTg4OWY3YzQ4YjU3NTc4NTBmZGUxNzkxMmI1MjNjOGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uu
Y3BwCkBAIC01NzUsOCArNTc1LDYgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpz
ZXR1cEZsYWdzKCkKICAgICAgICAgbV9zeW50aGVzaXplZEVycm9yc1RvQ29uc29sZSA9IHBhZ2Ut
PnNldHRpbmdzKCkud2ViR0xFcnJvcnNUb0NvbnNvbGVFbmFibGVkKCk7CiAKICAgICBtX2lzR0xF
UzJDb21wbGlhbnQgPSBtX2NvbnRleHQtPmlzR0xFUzJDb21wbGlhbnQoKTsKLSAgICBtX2lzRXJy
b3JHZW5lcmF0ZWRPbk91dE9mQm91bmRzQWNjZXNzZXMgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS0+aXNFbmFibGVkKCJHTF9DSFJPTUlVTV9zdHJpY3RfYXR0cmlicyIpOwotICAgIG1faXNS
ZXNvdXJjZVNhZmUgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+aXNFbmFibGVkKCJHTF9D
SFJPTUlVTV9yZXNvdXJjZV9zYWZlIik7CiAgICAgaWYgKG1faXNHTEVTMkNvbXBsaWFudCkgewog
ICAgICAgICBtX2lzR0xFUzJOUE9UU3RyaWN0ID0gIW1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LT5pc0VuYWJsZWQoIkdMX09FU190ZXh0dXJlX25wb3QiKTsKICAgICAgICAgbV9pc0RlcHRoU3Rl
bmNpbFN1cHBvcnRlZCA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5pc0VuYWJsZWQoIkdM
X09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCIpOwpAQCAtMTA5MSwxMSArMTA4OSw5IEBAIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YnVmZmVyRGF0YShHQzNEZW51bSB0YXJnZXQsIGxv
bmcgbG9uZyBzaXplLCBHQzNECiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29u
dGV4dDNEOjpJTlZBTElEX1ZBTFVFLCAiYnVmZmVyRGF0YSIsICJzaXplID09IDAiKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoIWlzRXJyb3JHZW5lcmF0ZWRPbk91dE9mQm91bmRz
QWNjZXNzZXMoKSkgewotICAgICAgICBpZiAoIWJ1ZmZlci0+YXNzb2NpYXRlQnVmZmVyRGF0YShz
dGF0aWNfY2FzdDxHQzNEc2l6ZWlwdHI+KHNpemUpKSkgewotICAgICAgICAgICAgc3ludGhlc2l6
ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUsICJidWZmZXJEYXRhIiwg
ImludmFsaWQgYnVmZmVyIik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICBp
ZiAoIWJ1ZmZlci0+YXNzb2NpYXRlQnVmZmVyRGF0YShzdGF0aWNfY2FzdDxHQzNEc2l6ZWlwdHI+
KHNpemUpKSkgeworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6
SU5WQUxJRF9WQUxVRSwgImJ1ZmZlckRhdGEiLCAiaW52YWxpZCBidWZmZXIiKTsKKyAgICAgICAg
cmV0dXJuOwogICAgIH0KIAogICAgIG1fY29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJy
b3JMaXN0KCk7CkBAIC0xMTE5LDExICsxMTE1LDkgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpidWZmZXJEYXRhKEdDM0RlbnVtIHRhcmdldCwgT3B0aW9uYWw8QnVmZmVyRGF0YVMK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgV1RGOjp2aXNpdChbJl0oYXV0byYgZGF0YSkgewotICAg
ICAgICBpZiAoIXRoaXMtPmlzRXJyb3JHZW5lcmF0ZWRPbk91dE9mQm91bmRzQWNjZXNzZXMoKSkg
ewotICAgICAgICAgICAgaWYgKCFidWZmZXItPmFzc29jaWF0ZUJ1ZmZlckRhdGEoZGF0YS5nZXQo
KSkpIHsKLSAgICAgICAgICAgICAgICB0aGlzLT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0Nv
bnRleHQzRDo6SU5WQUxJRF9WQUxVRSwgImJ1ZmZlckRhdGEiLCAiaW52YWxpZCBidWZmZXIiKTsK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9CisgICAgICAgIGlmICghYnVm
ZmVyLT5hc3NvY2lhdGVCdWZmZXJEYXRhKGRhdGEuZ2V0KCkpKSB7CisgICAgICAgICAgICB0aGlz
LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSwgImJ1
ZmZlckRhdGEiLCAiaW52YWxpZCBidWZmZXIiKTsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCiAgICAgICAgIG1fY29udGV4dC0+bW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0
KCk7CkBAIC0xMTUwLDExICsxMTQ0LDkgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpidWZmZXJTdWJEYXRhKEdDM0RlbnVtIHRhcmdldCwgbG9uZyBsb25nIG9mZnNldCwKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgV1RGOjp2aXNpdChbJl0oYXV0byYgZGF0YSkgewotICAgICAgICBp
ZiAoIXRoaXMtPmlzRXJyb3JHZW5lcmF0ZWRPbk91dE9mQm91bmRzQWNjZXNzZXMoKSkgewotICAg
ICAgICAgICAgaWYgKCFidWZmZXItPmFzc29jaWF0ZUJ1ZmZlclN1YkRhdGEoc3RhdGljX2Nhc3Q8
R0MzRGludHB0cj4ob2Zmc2V0KSwgZGF0YS5nZXQoKSkpIHsKLSAgICAgICAgICAgICAgICB0aGlz
LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSwgImJ1
ZmZlclN1YkRhdGEiLCAib2Zmc2V0IG91dCBvZiByYW5nZSIpOwotICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgaWYgKCFidWZmZXItPmFzc29jaWF0ZUJ1ZmZl
clN1YkRhdGEoc3RhdGljX2Nhc3Q8R0MzRGludHB0cj4ob2Zmc2V0KSwgZGF0YS5nZXQoKSkpIHsK
KyAgICAgICAgICAgIHRoaXMtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJ
TlZBTElEX1ZBTFVFLCAiYnVmZmVyU3ViRGF0YSIsICJvZmZzZXQgb3V0IG9mIHJhbmdlIik7Cisg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBtX2NvbnRleHQtPm1vdmVF
cnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpOwpAQCAtMTM1NSw0NSArMTM0Nyw0MSBAQCB2b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNvcHlUZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRh
cmdldCwgR0MzRGludCBsZXZlbAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNvbnN0IGNo
YXIqIHJlYXNvbiA9ICJmcmFtZWJ1ZmZlciBpbmNvbXBsZXRlIjsKLSAgICBpZiAobV9mcmFtZWJ1
ZmZlckJpbmRpbmcgJiYgIW1fZnJhbWVidWZmZXJCaW5kaW5nLT5vbkFjY2VzcyhncmFwaGljc0Nv
bnRleHQzRCgpLCAhaXNSZXNvdXJjZVNhZmUoKSwgJnJlYXNvbikpIHsKKyAgICBpZiAobV9mcmFt
ZWJ1ZmZlckJpbmRpbmcgJiYgIW1fZnJhbWVidWZmZXJCaW5kaW5nLT5vbkFjY2VzcyhncmFwaGlj
c0NvbnRleHQzRCgpLCAmcmVhc29uKSkgewogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHQzRDo6SU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04sICJjb3B5VGV4U3Vi
SW1hZ2UyRCIsIHJlYXNvbik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2xlYXJJZkNv
bXBvc2l0ZWQoKTsKLSAgICBpZiAoaXNSZXNvdXJjZVNhZmUoKSkKLSAgICAgICAgbV9jb250ZXh0
LT5jb3B5VGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB4LCB5
LCB3aWR0aCwgaGVpZ2h0KTsKLSAgICBlbHNlIHsKLSAgICAgICAgR0MzRGludCBjbGlwcGVkWCwg
Y2xpcHBlZFk7Ci0gICAgICAgIEdDM0RzaXplaSBjbGlwcGVkV2lkdGgsIGNsaXBwZWRIZWlnaHQ7
Ci0gICAgICAgIGlmIChjbGlwMkQoeCwgeSwgd2lkdGgsIGhlaWdodCwgZ2V0Qm91bmRGcmFtZWJ1
ZmZlcldpZHRoKCksIGdldEJvdW5kRnJhbWVidWZmZXJIZWlnaHQoKSwgJmNsaXBwZWRYLCAmY2xp
cHBlZFksICZjbGlwcGVkV2lkdGgsICZjbGlwcGVkSGVpZ2h0KSkgewotICAgICAgICAgICAgR0Mz
RGVudW0gZm9ybWF0OwotICAgICAgICAgICAgR0MzRGVudW0gdHlwZTsKLSAgICAgICAgICAgIGlm
ICghR3JhcGhpY3NDb250ZXh0M0Q6OnBvc3NpYmxlRm9ybWF0QW5kVHlwZUZvckludGVybmFsRm9y
bWF0KHRleC0+Z2V0SW50ZXJuYWxGb3JtYXQodGFyZ2V0LCBsZXZlbCksIGZvcm1hdCwgdHlwZSkp
IHsKLSAgICAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6
SU5WQUxJRF9FTlVNLCAiY29weVRleFN1YkltYWdlMkQiLCAiVGV4dHVyZSBoYXMgdW5rbm93biBp
bnRlcm5hbCBmb3JtYXQiKTsKKworICAgIEdDM0RpbnQgY2xpcHBlZFgsIGNsaXBwZWRZOworICAg
IEdDM0RzaXplaSBjbGlwcGVkV2lkdGgsIGNsaXBwZWRIZWlnaHQ7CisgICAgaWYgKGNsaXAyRCh4
LCB5LCB3aWR0aCwgaGVpZ2h0LCBnZXRCb3VuZEZyYW1lYnVmZmVyV2lkdGgoKSwgZ2V0Qm91bmRG
cmFtZWJ1ZmZlckhlaWdodCgpLCAmY2xpcHBlZFgsICZjbGlwcGVkWSwgJmNsaXBwZWRXaWR0aCwg
JmNsaXBwZWRIZWlnaHQpKSB7CisgICAgICAgIEdDM0RlbnVtIGZvcm1hdDsKKyAgICAgICAgR0Mz
RGVudW0gdHlwZTsKKyAgICAgICAgaWYgKCFHcmFwaGljc0NvbnRleHQzRDo6cG9zc2libGVGb3Jt
YXRBbmRUeXBlRm9ySW50ZXJuYWxGb3JtYXQodGV4LT5nZXRJbnRlcm5hbEZvcm1hdCh0YXJnZXQs
IGxldmVsKSwgZm9ybWF0LCB0eXBlKSkgeworICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3Io
R3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSwgImNvcHlUZXhTdWJJbWFnZTJEIiwgIlRl
eHR1cmUgaGFzIHVua25vd24gaW50ZXJuYWwgZm9ybWF0Iik7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHVuc2lnbmVkIGNoYXJbXT4gemVy
bzsKKyAgICAgICAgaWYgKHdpZHRoICYmIGhlaWdodCkgeworICAgICAgICAgICAgdW5zaWduZWQg
c2l6ZTsKKyAgICAgICAgICAgIEdDM0RlbnVtIGVycm9yID0gbV9jb250ZXh0LT5jb21wdXRlSW1h
Z2VTaXplSW5CeXRlcyhmb3JtYXQsIHR5cGUsIHdpZHRoLCBoZWlnaHQsIG1fdW5wYWNrQWxpZ25t
ZW50LCAmc2l6ZSwgMCk7CisgICAgICAgICAgICBpZiAoZXJyb3IgIT0gR3JhcGhpY3NDb250ZXh0
M0Q6Ok5PX0VSUk9SKSB7CisgICAgICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoZXJyb3Is
ICJjb3B5VGV4U3ViSW1hZ2UyRCIsICJiYWQgZGltZW5zaW9ucyIpOwogICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjx1bnNp
Z25lZCBjaGFyW10+IHplcm87Ci0gICAgICAgICAgICBpZiAod2lkdGggJiYgaGVpZ2h0KSB7Ci0g
ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHNpemU7Ci0gICAgICAgICAgICAgICAgR0MzRGVu
dW0gZXJyb3IgPSBtX2NvbnRleHQtPmNvbXB1dGVJbWFnZVNpemVJbkJ5dGVzKGZvcm1hdCwgdHlw
ZSwgd2lkdGgsIGhlaWdodCwgbV91bnBhY2tBbGlnbm1lbnQsICZzaXplLCAwKTsKLSAgICAgICAg
ICAgICAgICBpZiAoZXJyb3IgIT0gR3JhcGhpY3NDb250ZXh0M0Q6Ok5PX0VSUk9SKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKGVycm9yLCAiY29weVRleFN1YkltYWdl
MkQiLCAiYmFkIGRpbWVuc2lvbnMiKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB6ZXJvID0gc3RkOjptYWtlX3VuaXF1ZTx1
bnNpZ25lZCBjaGFyW10+KHNpemUpOwotICAgICAgICAgICAgICAgIGlmICghemVybykgewotICAg
ICAgICAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5W
QUxJRF9WQUxVRSwgImNvcHlUZXhTdWJJbWFnZTJEIiwgIm91dCBvZiBtZW1vcnkiKTsKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBtZW1zZXQoemVyby5nZXQoKSwgMCwgc2l6ZSk7CisgICAgICAgICAgICB6ZXJvID0gc3RkOjpt
YWtlX3VuaXF1ZTx1bnNpZ25lZCBjaGFyW10+KHNpemUpOworICAgICAgICAgICAgaWYgKCF6ZXJv
KSB7CisgICAgICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6
OklOVkFMSURfVkFMVUUsICJjb3B5VGV4U3ViSW1hZ2UyRCIsICJvdXQgb2YgbWVtb3J5Iik7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgbV9jb250
ZXh0LT50ZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRo
LCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgemVyby5nZXQoKSk7Ci0gICAgICAgICAgICBpZiAoY2xp
cHBlZFdpZHRoID4gMCAmJiBjbGlwcGVkSGVpZ2h0ID4gMCkKLSAgICAgICAgICAgICAgICBtX2Nv
bnRleHQtPmNvcHlUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQgKyBjbGlwcGVk
WCAtIHgsIHlvZmZzZXQgKyBjbGlwcGVkWSAtIHksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjbGlwcGVkWCwgY2xpcHBlZFksIGNsaXBwZWRXaWR0aCwgY2xp
cHBlZEhlaWdodCk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbV9jb250ZXh0LT5jb3B5
VGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB4LCB5LCB3aWR0
aCwgaGVpZ2h0KTsKLSAgICB9CisgICAgICAgICAgICBtZW1zZXQoemVyby5nZXQoKSwgMCwgc2l6
ZSk7CisgICAgICAgIH0KKyAgICAgICAgbV9jb250ZXh0LT50ZXhTdWJJbWFnZTJEKHRhcmdldCwg
bGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgemVy
by5nZXQoKSk7CisgICAgICAgIGlmIChjbGlwcGVkV2lkdGggPiAwICYmIGNsaXBwZWRIZWlnaHQg
PiAwKQorICAgICAgICAgICAgbV9jb250ZXh0LT5jb3B5VGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxl
dmVsLCB4b2Zmc2V0ICsgY2xpcHBlZFggLSB4LCB5b2Zmc2V0ICsgY2xpcHBlZFkgLSB5LCBjbGlw
cGVkWCwgY2xpcHBlZFksIGNsaXBwZWRXaWR0aCwgY2xpcHBlZEhlaWdodCk7CisgICAgfSBlbHNl
CisgICAgICAgIG1fY29udGV4dC0+Y29weVRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9m
ZnNldCwgeW9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCk7CiB9CiAKIFJlZlB0cjxXZWJHTEJ1
ZmZlcj4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y3JlYXRlQnVmZmVyKCkKQEAgLTE4MTgs
MjkgKzE4MDYsMjIgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZURy
YXdBcnJheXMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQzMKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIAotICAgIGlmICghaXNFcnJvckdlbmVyYXRlZE9uT3V0T2ZCb3VuZHNBY2Nl
c3NlcygpKSB7Ci0gICAgICAgIC8vIEVuc3VyZSB3ZSBoYXZlIGEgdmFsaWQgcmVuZGVyaW5nIHN0
YXRlCi0gICAgICAgIENoZWNrZWQ8R0MzRGludCwgUmVjb3JkT3ZlcmZsb3c+IGNoZWNrZWRGaXJz
dChmaXJzdCk7Ci0gICAgICAgIENoZWNrZWQ8R0MzRGludCwgUmVjb3JkT3ZlcmZsb3c+IGNoZWNr
ZWRDb3VudChjb3VudCk7Ci0gICAgICAgIENoZWNrZWQ8R0MzRGludCwgUmVjb3JkT3ZlcmZsb3c+
IGNoZWNrZWRTdW0gPSBjaGVja2VkRmlyc3QgKyBjaGVja2VkQ291bnQ7Ci0gICAgICAgIENoZWNr
ZWQ8R0MzRGludCwgUmVjb3JkT3ZlcmZsb3c+IGNoZWNrZWRQcmltaXRpdmVDb3VudChwcmltaXRp
dmVDb3VudCk7Ci0gICAgICAgIGlmIChjaGVja2VkU3VtLmhhc092ZXJmbG93ZWQoKSB8fCBjaGVj
a2VkUHJpbWl0aXZlQ291bnQuaGFzT3ZlcmZsb3dlZCgpIHx8ICF2YWxpZGF0ZVZlcnRleEF0dHJp
YnV0ZXMoY2hlY2tlZFN1bS51bnNhZmVHZXQoKSwgY2hlY2tlZFByaW1pdGl2ZUNvdW50LnVuc2Fm
ZUdldCgpKSkgewotICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0
M0Q6OklOVkFMSURfT1BFUkFUSU9OLCBmdW5jdGlvbk5hbWUsICJhdHRlbXB0IHRvIGFjY2VzcyBv
dXQgb2YgYm91bmRzIGFycmF5cyIpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICB9Ci0gICAgICAgIGlmICghdmFsaWRhdGVTaW11bGF0ZWRWZXJ0ZXhBdHRyaWIwKGNoZWNrZWRT
dW0udW5zYWZlR2V0KCkgLSAxKSkgewotICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OLCBmdW5jdGlvbk5hbWUsICJhdHRlbXB0
IHRvIGFjY2VzcyBvdXRzaWRlIHRoZSBib3VuZHMgb2YgdGhlIHNpbXVsYXRlZCB2ZXJ0ZXhBdHRy
aWIwIGFycmF5Iik7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9
IGVsc2UgewotICAgICAgICBpZiAoIXZhbGlkYXRlVmVydGV4QXR0cmlidXRlcygwKSkgewotICAg
ICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BF
UkFUSU9OLCBmdW5jdGlvbk5hbWUsICJhdHRyaWJzIG5vdCBzZXR1cCBjb3JyZWN0bHkiKTsKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQorICAgIC8vIEVuc3VyZSB3ZSBoYXZl
IGEgdmFsaWQgcmVuZGVyaW5nIHN0YXRlCisgICAgQ2hlY2tlZDxHQzNEaW50LCBSZWNvcmRPdmVy
Zmxvdz4gY2hlY2tlZEZpcnN0KGZpcnN0KTsKKyAgICBDaGVja2VkPEdDM0RpbnQsIFJlY29yZE92
ZXJmbG93PiBjaGVja2VkQ291bnQoY291bnQpOworICAgIENoZWNrZWQ8R0MzRGludCwgUmVjb3Jk
T3ZlcmZsb3c+IGNoZWNrZWRTdW0gPSBjaGVja2VkRmlyc3QgKyBjaGVja2VkQ291bnQ7CisgICAg
Q2hlY2tlZDxHQzNEaW50LCBSZWNvcmRPdmVyZmxvdz4gY2hlY2tlZFByaW1pdGl2ZUNvdW50KHBy
aW1pdGl2ZUNvdW50KTsKKyAgICBpZiAoY2hlY2tlZFN1bS5oYXNPdmVyZmxvd2VkKCkgfHwgY2hl
Y2tlZFByaW1pdGl2ZUNvdW50Lmhhc092ZXJmbG93ZWQoKSB8fCAhdmFsaWRhdGVWZXJ0ZXhBdHRy
aWJ1dGVzKGNoZWNrZWRTdW0udW5zYWZlR2V0KCksIGNoZWNrZWRQcmltaXRpdmVDb3VudC51bnNh
ZmVHZXQoKSkpIHsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6
OklOVkFMSURfT1BFUkFUSU9OLCBmdW5jdGlvbk5hbWUsICJhdHRlbXB0IHRvIGFjY2VzcyBvdXQg
b2YgYm91bmRzIGFycmF5cyIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGlm
ICghdmFsaWRhdGVTaW11bGF0ZWRWZXJ0ZXhBdHRyaWIwKGNoZWNrZWRTdW0udW5zYWZlR2V0KCkg
LSAxKSkgeworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5W
QUxJRF9PUEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwgImF0dGVtcHQgdG8gYWNjZXNzIG91dHNpZGUg
dGhlIGJvdW5kcyBvZiB0aGUgc2ltdWxhdGVkIHZlcnRleEF0dHJpYjAgYXJyYXkiKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGNvbnN0IGNoYXIqIHJlYXNvbiA9ICJmcmFt
ZWJ1ZmZlciBpbmNvbXBsZXRlIjsKLSAgICBpZiAobV9mcmFtZWJ1ZmZlckJpbmRpbmcgJiYgIW1f
ZnJhbWVidWZmZXJCaW5kaW5nLT5vbkFjY2VzcyhncmFwaGljc0NvbnRleHQzRCgpLCAhaXNSZXNv
dXJjZVNhZmUoKSwgJnJlYXNvbikpIHsKKyAgICBpZiAobV9mcmFtZWJ1ZmZlckJpbmRpbmcgJiYg
IW1fZnJhbWVidWZmZXJCaW5kaW5nLT5vbkFjY2VzcyhncmFwaGljc0NvbnRleHQzRCgpLCAmcmVh
c29uKSkgewogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5W
QUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwgcmVhc29uKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTE4ODksNDQgKzE4NzAsMzYgQEAgYm9vbCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZURyYXdFbGVtZW50cyhjb25zdCBjaGFyKiBm
dW5jdGlvbk5hbWUsIEcKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0
M0Q6OklOVkFMSURfT1BFUkFUSU9OLCBmdW5jdGlvbk5hbWUsICJubyBFTEVNRU5UX0FSUkFZX0JV
RkZFUiBib3VuZCIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQorCisgICAgLy8gRW5z
dXJlIHdlIGhhdmUgYSB2YWxpZCByZW5kZXJpbmcgc3RhdGUKKyAgICBpZiAoIXZhbGlkYXRlRWxl
bWVudEFycmF5U2l6ZShjb3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8R0MzRGludHB0cj4ob2Zmc2V0
KSkpIHsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFM
SURfT1BFUkFUSU9OLCBmdW5jdGlvbk5hbWUsICJyZXF1ZXN0IG91dCBvZiBib3VuZHMgZm9yIGN1
cnJlbnQgRUxFTUVOVF9BUlJBWV9CVUZGRVIiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKyAgICBpZiAoIWNvdW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgaWYg
KCFpc0Vycm9yR2VuZXJhdGVkT25PdXRPZkJvdW5kc0FjY2Vzc2VzKCkpIHsKLSAgICAgICAgLy8g
RW5zdXJlIHdlIGhhdmUgYSB2YWxpZCByZW5kZXJpbmcgc3RhdGUKLSAgICAgICAgaWYgKCF2YWxp
ZGF0ZUVsZW1lbnRBcnJheVNpemUoY291bnQsIHR5cGUsIHN0YXRpY19jYXN0PEdDM0RpbnRwdHI+
KG9mZnNldCkpKSB7Ci0gICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRl
eHQzRDo6SU5WQUxJRF9PUEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwgInJlcXVlc3Qgb3V0IG9mIGJv
dW5kcyBmb3IgY3VycmVudCBFTEVNRU5UX0FSUkFZX0JVRkZFUiIpOwotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGlmICghY291bnQpCi0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIAotICAgICAgICBDaGVja2VkPEdDM0RpbnQsIFJlY29yZE92
ZXJmbG93PiBjaGVja2VkQ291bnQoY291bnQpOwotICAgICAgICBDaGVja2VkPEdDM0RpbnQsIFJl
Y29yZE92ZXJmbG93PiBjaGVja2VkUHJpbWl0aXZlQ291bnQocHJpbWl0aXZlQ291bnQpOwotICAg
ICAgICBpZiAoY2hlY2tlZENvdW50Lmhhc092ZXJmbG93ZWQoKSB8fCBjaGVja2VkUHJpbWl0aXZl
Q291bnQuaGFzT3ZlcmZsb3dlZCgpKSB7CisgICAgQ2hlY2tlZDxHQzNEaW50LCBSZWNvcmRPdmVy
Zmxvdz4gY2hlY2tlZENvdW50KGNvdW50KTsKKyAgICBDaGVja2VkPEdDM0RpbnQsIFJlY29yZE92
ZXJmbG93PiBjaGVja2VkUHJpbWl0aXZlQ291bnQocHJpbWl0aXZlQ291bnQpOworICAgIGlmIChj
aGVja2VkQ291bnQuaGFzT3ZlcmZsb3dlZCgpIHx8IGNoZWNrZWRQcmltaXRpdmVDb3VudC5oYXNP
dmVyZmxvd2VkKCkpIHsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0
M0Q6OklOVkFMSURfT1BFUkFUSU9OLCBmdW5jdGlvbk5hbWUsICJhdHRlbXB0IHRvIGFjY2VzcyBv
dXQgb2YgYm91bmRzIGFycmF5cyIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAg
IAorICAgIGlmICghdmFsaWRhdGVJbmRleEFycmF5Q29uc2VydmF0aXZlKHR5cGUsIG51bUVsZW1l
bnRzKSB8fCAhdmFsaWRhdGVWZXJ0ZXhBdHRyaWJ1dGVzKG51bUVsZW1lbnRzLCBjaGVja2VkUHJp
bWl0aXZlQ291bnQudW5zYWZlR2V0KCkpKSB7CisgICAgICAgIGlmICghdmFsaWRhdGVJbmRleEFy
cmF5UHJlY2lzZShjaGVja2VkQ291bnQudW5zYWZlR2V0KCksIHR5cGUsIHN0YXRpY19jYXN0PEdD
M0RpbnRwdHI+KG9mZnNldCksIG51bUVsZW1lbnRzKSB8fCAhdmFsaWRhdGVWZXJ0ZXhBdHRyaWJ1
dGVzKG51bUVsZW1lbnRzLCBjaGVja2VkUHJpbWl0aXZlQ291bnQudW5zYWZlR2V0KCkpKSB7CiAg
ICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9P
UEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwgImF0dGVtcHQgdG8gYWNjZXNzIG91dCBvZiBib3VuZHMg
YXJyYXlzIik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KLSAgICAgICAg
Ci0gICAgICAgIGlmICghdmFsaWRhdGVJbmRleEFycmF5Q29uc2VydmF0aXZlKHR5cGUsIG51bUVs
ZW1lbnRzKSB8fCAhdmFsaWRhdGVWZXJ0ZXhBdHRyaWJ1dGVzKG51bUVsZW1lbnRzLCBjaGVja2Vk
UHJpbWl0aXZlQ291bnQudW5zYWZlR2V0KCkpKSB7Ci0gICAgICAgICAgICBpZiAoIXZhbGlkYXRl
SW5kZXhBcnJheVByZWNpc2UoY2hlY2tlZENvdW50LnVuc2FmZUdldCgpLCB0eXBlLCBzdGF0aWNf
Y2FzdDxHQzNEaW50cHRyPihvZmZzZXQpLCBudW1FbGVtZW50cykgfHwgIXZhbGlkYXRlVmVydGV4
QXR0cmlidXRlcyhudW1FbGVtZW50cywgY2hlY2tlZFByaW1pdGl2ZUNvdW50LnVuc2FmZUdldCgp
KSkgewotICAgICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNE
OjpJTlZBTElEX09QRVJBVElPTiwgZnVuY3Rpb25OYW1lLCAiYXR0ZW1wdCB0byBhY2Nlc3Mgb3V0
IG9mIGJvdW5kcyBhcnJheXMiKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIXZhbGlkYXRlU2ltdWxhdGVkVmVy
dGV4QXR0cmliMChudW1FbGVtZW50cykpIHsKLSAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTiwgZnVuY3Rpb25OYW1lLCAiYXR0
ZW1wdCB0byBhY2Nlc3Mgb3V0c2lkZSB0aGUgYm91bmRzIG9mIHRoZSBzaW11bGF0ZWQgdmVydGV4
QXR0cmliMCBhcnJheSIpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Cisg
ICAgfQogCi0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKCF2YWxpZGF0ZVZlcnRleEF0dHJpYnV0
ZXMoMCkpIHsKLSAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNE
OjpJTlZBTElEX09QRVJBVElPTiwgZnVuY3Rpb25OYW1lLCAiYXR0cmlicyBub3Qgc2V0dXAgY29y
cmVjdGx5Iik7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KKyAgICBpZiAo
IXZhbGlkYXRlU2ltdWxhdGVkVmVydGV4QXR0cmliMChudW1FbGVtZW50cykpIHsKKyAgICAgICAg
c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OLCBm
dW5jdGlvbk5hbWUsICJhdHRlbXB0IHRvIGFjY2VzcyBvdXRzaWRlIHRoZSBib3VuZHMgb2YgdGhl
IHNpbXVsYXRlZCB2ZXJ0ZXhBdHRyaWIwIGFycmF5Iik7CisgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAgICAgCiAgICAgY29uc3QgY2hhciogcmVhc29uID0gImZyYW1lYnVmZmVyIGluY29t
cGxldGUiOwotICAgIGlmIChtX2ZyYW1lYnVmZmVyQmluZGluZyAmJiAhbV9mcmFtZWJ1ZmZlckJp
bmRpbmctPm9uQWNjZXNzKGdyYXBoaWNzQ29udGV4dDNEKCksICFpc1Jlc291cmNlU2FmZSgpLCAm
cmVhc29uKSkgeworICAgIGlmIChtX2ZyYW1lYnVmZmVyQmluZGluZyAmJiAhbV9mcmFtZWJ1ZmZl
ckJpbmRpbmctPm9uQWNjZXNzKGdyYXBoaWNzQ29udGV4dDNEKCksICZyZWFzb24pKSB7CiAgICAg
ICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0ZSQU1FQlVG
RkVSX09QRVJBVElPTiwgZnVuY3Rpb25OYW1lLCByZWFzb24pOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQpAQCAtMzAxNCw3ICsyOTg3LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpyZWFkUGl4ZWxzKEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgK
ICAgICBHQzNEZW51bSBpbnRlcm5hbEZvcm1hdCA9IDA7CiAgICAgaWYgKG1fZnJhbWVidWZmZXJC
aW5kaW5nKSB7CiAgICAgICAgIGNvbnN0IGNoYXIqIHJlYXNvbiA9ICJmcmFtZWJ1ZmZlciBpbmNv
bXBsZXRlIjsKLSAgICAgICAgaWYgKCFtX2ZyYW1lYnVmZmVyQmluZGluZy0+b25BY2Nlc3MoZ3Jh
cGhpY3NDb250ZXh0M0QoKSwgIWlzUmVzb3VyY2VTYWZlKCksICZyZWFzb24pKSB7CisgICAgICAg
IGlmICghbV9mcmFtZWJ1ZmZlckJpbmRpbmctPm9uQWNjZXNzKGdyYXBoaWNzQ29udGV4dDNEKCks
ICZyZWFzb24pKSB7CiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRl
eHQzRDo6SU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04sICJyZWFkUGl4ZWxzIiwgcmVhc29u
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMzI4MywxOCArMzI1Niw4IEBA
IHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dGV4SW1hZ2UyREJhc2UoR0MzRGVudW0g
dGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHCiAgICAgQVNTRVJUKHRleCk7CiAgICAgQVNTRVJUKHZh
bGlkYXRlTlBPVFRleHR1cmVMZXZlbCh3aWR0aCwgaGVpZ2h0LCBsZXZlbCwgInRleEltYWdlMkQi
KSk7CiAgICAgaWYgKCFwaXhlbHMpIHsKLSAgICAgICAgLy8gTm90ZTogQ2hyb21pdW0ncyBPcGVu
R0wgaW1wbGVtZW50YXRpb24gY2xlYXJzIHRleHR1cmVzIGFuZCBpc1Jlc291cmNlU2FmZSgpIGlz
IHRoZXJlZm9yZSB0cnVlLgotICAgICAgICAvLyBGb3Igb3RoZXIgaW1wbGVtZW50YXRpb25zLCBp
ZiB0aGV5IGFyZSB1c2luZyBBTkdMRV9kZXB0aF90ZXh0dXJlLCBBTkdMRSBkZXB0aCB0ZXh0dXJl
cwotICAgICAgICAvLyBjYW4gbm90IGJlIGNsZWFyZWQgd2l0aCB0ZXhJbWFnZTJEIGFuZCBtdXN0
IGJlIGNsZWFyZWQgYnkgYmluZGluZyB0byBhbiBmYm8gYW5kIGNhbGxpbmcKLSAgICAgICAgLy8g
Y2xlYXIuCi0gICAgICAgIGlmIChpc1Jlc291cmNlU2FmZSgpKQotICAgICAgICAgICAgbV9jb250
ZXh0LT50ZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVp
Z2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgbnVsbHB0cik7Ci0gICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgYm9vbCBzdWNjZWVkID0gbV9jb250ZXh0LT50ZXhJbWFnZTJEUmVzb3VyY2VTYWZl
KHRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRl
ciwgZm9ybWF0LCB0eXBlLCBtX3VucGFja0FsaWdubWVudCk7Ci0gICAgICAgICAgICBpZiAoIXN1
Y2NlZWQpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAgIGlmICgh
bV9jb250ZXh0LT50ZXhJbWFnZTJEUmVzb3VyY2VTYWZlKHRhcmdldCwgbGV2ZWwsIGludGVybmFs
Rm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgbV91bnBhY2tBbGln
bm1lbnQpKQorICAgICAgICAgICAgcmV0dXJuOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VS
VCh2YWxpZGF0ZVNldHRhYmxlVGV4SW50ZXJuYWxGb3JtYXQoInRleEltYWdlMkQiLCBpbnRlcm5h
bEZvcm1hdCkpOwogICAgICAgICBtX2NvbnRleHQtPm1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9y
TGlzdCgpOwpAQCAtMzk3OCwyNiArMzk0MSwyNCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OmNvcHlUZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgRwog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNvbnN0IGNoYXIqIHJlYXNvbiA9ICJmcmFtZWJ1
ZmZlciBpbmNvbXBsZXRlIjsKLSAgICBpZiAobV9mcmFtZWJ1ZmZlckJpbmRpbmcgJiYgIW1fZnJh
bWVidWZmZXJCaW5kaW5nLT5vbkFjY2VzcyhncmFwaGljc0NvbnRleHQzRCgpLCAhaXNSZXNvdXJj
ZVNhZmUoKSwgJnJlYXNvbikpIHsKKyAgICBpZiAobV9mcmFtZWJ1ZmZlckJpbmRpbmcgJiYgIW1f
ZnJhbWVidWZmZXJCaW5kaW5nLT5vbkFjY2VzcyhncmFwaGljc0NvbnRleHQzRCgpLCAmcmVhc29u
KSkgewogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJ
RF9GUkFNRUJVRkZFUl9PUEVSQVRJT04sICJjb3B5VGV4SW1hZ2UyRCIsIHJlYXNvbik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgY2xlYXJJZkNvbXBvc2l0ZWQoKTsKLSAgICBpZiAoaXNS
ZXNvdXJjZVNhZmUoKSkKKworICAgIEdDM0RpbnQgY2xpcHBlZFgsIGNsaXBwZWRZOworICAgIEdD
M0RzaXplaSBjbGlwcGVkV2lkdGgsIGNsaXBwZWRIZWlnaHQ7CisgICAgaWYgKGNsaXAyRCh4LCB5
LCB3aWR0aCwgaGVpZ2h0LCBnZXRCb3VuZEZyYW1lYnVmZmVyV2lkdGgoKSwgZ2V0Qm91bmRGcmFt
ZWJ1ZmZlckhlaWdodCgpLCAmY2xpcHBlZFgsICZjbGlwcGVkWSwgJmNsaXBwZWRXaWR0aCwgJmNs
aXBwZWRIZWlnaHQpKSB7CisgICAgICAgIG1fY29udGV4dC0+dGV4SW1hZ2UyRFJlc291cmNlU2Fm
ZSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLAor
ICAgICAgICAgICAgaW50ZXJuYWxGb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9C
WVRFLCBtX3VucGFja0FsaWdubWVudCk7CisgICAgICAgIGlmIChjbGlwcGVkV2lkdGggPiAwICYm
IGNsaXBwZWRIZWlnaHQgPiAwKSB7CisgICAgICAgICAgICBtX2NvbnRleHQtPmNvcHlUZXhTdWJJ
bWFnZTJEKHRhcmdldCwgbGV2ZWwsIGNsaXBwZWRYIC0geCwgY2xpcHBlZFkgLSB5LAorICAgICAg
ICAgICAgICAgIGNsaXBwZWRYLCBjbGlwcGVkWSwgY2xpcHBlZFdpZHRoLCBjbGlwcGVkSGVpZ2h0
KTsKKyAgICAgICAgfQorICAgIH0gZWxzZQogICAgICAgICBtX2NvbnRleHQtPmNvcHlUZXhJbWFn
ZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBi
b3JkZXIpOwotICAgIGVsc2UgewotICAgICAgICBHQzNEaW50IGNsaXBwZWRYLCBjbGlwcGVkWTsK
LSAgICAgICAgR0MzRHNpemVpIGNsaXBwZWRXaWR0aCwgY2xpcHBlZEhlaWdodDsKLSAgICAgICAg
aWYgKGNsaXAyRCh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBnZXRCb3VuZEZyYW1lYnVmZmVyV2lkdGgo
KSwgZ2V0Qm91bmRGcmFtZWJ1ZmZlckhlaWdodCgpLCAmY2xpcHBlZFgsICZjbGlwcGVkWSwgJmNs
aXBwZWRXaWR0aCwgJmNsaXBwZWRIZWlnaHQpKSB7Ci0gICAgICAgICAgICBtX2NvbnRleHQtPnRl
eEltYWdlMkRSZXNvdXJjZVNhZmUodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIHdpZHRo
LCBoZWlnaHQsIGJvcmRlciwKLSAgICAgICAgICAgICAgICBpbnRlcm5hbEZvcm1hdCwgR3JhcGhp
Y3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIG1fdW5wYWNrQWxpZ25tZW50KTsKLSAgICAgICAg
ICAgIGlmIChjbGlwcGVkV2lkdGggPiAwICYmIGNsaXBwZWRIZWlnaHQgPiAwKSB7Ci0gICAgICAg
ICAgICAgICAgbV9jb250ZXh0LT5jb3B5VGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBjbGlw
cGVkWCAtIHgsIGNsaXBwZWRZIC0geSwKLSAgICAgICAgICAgICAgICAgICAgY2xpcHBlZFgsIGNs
aXBwZWRZLCBjbGlwcGVkV2lkdGgsIGNsaXBwZWRIZWlnaHQpOwotICAgICAgICAgICAgfQotICAg
ICAgICB9IGVsc2UKLSAgICAgICAgICAgIG1fY29udGV4dC0+Y29weVRleEltYWdlMkQodGFyZ2V0
LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIHgsIHksIHdpZHRoLCBoZWlnaHQsIGJvcmRlcik7Ci0g
ICAgfQorCiAgICAgLy8gRklYTUU6IGlmIHRoZSBmcmFtZWJ1ZmZlciBpcyBub3QgY29tcGxldGUs
IG5vbmUgb2YgdGhlIGJlbG93IHNob3VsZCBiZSBleGVjdXRlZC4KICAgICB0ZXgtPnNldExldmVs
SW5mbyh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodCwgR3JhcGhp
Y3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCmluZGV4IDY2ZGMwZDE5
NTYzODUyNGFlZGQxYjQwOWY4ZGU0YTFhYjMzYTI3YjcuLjJiMzE2YmRiMWRmYTgyMTFmOTUxMTVk
ZjRlMzE0YTk4NjNlODBhOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKQEAgLTM3MSwxMCArMzcxLDYgQEAgcHJv
dGVjdGVkOgogICAgIGJvb2wgaXNHTEVTMkNvbXBsaWFudCgpIHsgcmV0dXJuIG1faXNHTEVTMkNv
bXBsaWFudDsgfQogICAgIC8vIFF1ZXJ5IGlmIHRoZSBHTCBpbXBsZW1lbnRhdGlvbiBpcyBOUE9U
IHN0cmljdC4KICAgICBib29sIGlzR0xFUzJOUE9UU3RyaWN0KCkgeyByZXR1cm4gbV9pc0dMRVMy
TlBPVFN0cmljdDsgfQotICAgIC8vIFF1ZXJ5IGlmIHRoZSBHTCBpbXBsZW1lbnRhdGlvbiBnZW5l
cmF0ZXMgZXJyb3JzIG9uIG91dC1vZi1ib3VuZHMgYnVmZmVyIGFjY2Vzc2VzLgotICAgIGJvb2wg
aXNFcnJvckdlbmVyYXRlZE9uT3V0T2ZCb3VuZHNBY2Nlc3NlcygpIHsgcmV0dXJuIG1faXNFcnJv
ckdlbmVyYXRlZE9uT3V0T2ZCb3VuZHNBY2Nlc3NlczsgfQotICAgIC8vIFF1ZXJ5IGlmIHRoZSBH
TCBpbXBsZW1lbnRhdGlvbiBpbml0aWFsaXplcyB0ZXh0dXJlcy9yZW5kZXJidWZmZXJzIHRvIDAu
Ci0gICAgYm9vbCBpc1Jlc291cmNlU2FmZSgpIHsgcmV0dXJuIG1faXNSZXNvdXJjZVNhZmU7IH0K
ICAgICAvLyBRdWVyeSBpZiBkZXB0aF9zdGVuY2lsIGJ1ZmZlciBpcyBzdXBwb3J0ZWQuCiAgICAg
Ym9vbCBpc0RlcHRoU3RlbmNpbFN1cHBvcnRlZCgpIHsgcmV0dXJuIG1faXNEZXB0aFN0ZW5jaWxT
dXBwb3J0ZWQ7IH0KIApAQCAtNTM2LDggKzUzMiw2IEBAIHByb3RlY3RlZDoKIAogICAgIGJvb2wg
bV9pc0dMRVMyQ29tcGxpYW50OwogICAgIGJvb2wgbV9pc0dMRVMyTlBPVFN0cmljdDsKLSAgICBi
b29sIG1faXNFcnJvckdlbmVyYXRlZE9uT3V0T2ZCb3VuZHNBY2Nlc3NlczsKLSAgICBib29sIG1f
aXNSZXNvdXJjZVNhZmU7CiAgICAgYm9vbCBtX2lzRGVwdGhTdGVuY2lsU3VwcG9ydGVkOwogICAg
IGJvb2wgbV9pc1JvYnVzdG5lc3NFWFRTdXBwb3J0ZWQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcAppbmRleCA2ZWRm
N2FlZjliY2I0YjVlZDU5NmY3MmY2Y2VkMGJkZWE2Zjc2MDAwLi42ZTkyNzYxZDRmZTNmN2FlN2I4
ZjMyOTM1MjNlYmZmYWZhNGVkMjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwCkBAIC0xNDcsNyArMTQ3LDcgQEAg
Ym9vbCBHcmFwaGljc0NvbnRleHQzRDo6dGV4SW1hZ2UyRFJlc291cmNlU2FmZShHQzNEZW51bSB0
YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEcKIHsKICAgICBBU1NFUlQodW5wYWNrQWxpZ25tZW50ID09
IDEgfHwgdW5wYWNrQWxpZ25tZW50ID09IDIgfHwgdW5wYWNrQWxpZ25tZW50ID09IDQgfHwgdW5w
YWNrQWxpZ25tZW50ID09IDgpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjx1bnNpZ25lZCBjaGFyW10+
IHplcm87Ci0gICAgaWYgKCFpc1Jlc291cmNlU2FmZSgpICYmIHdpZHRoID4gMCAmJiBoZWlnaHQg
PiAwKSB7CisgICAgaWYgKHdpZHRoID4gMCAmJiBoZWlnaHQgPiAwKSB7CiAgICAgICAgIHVuc2ln
bmVkIGludCBzaXplOwogICAgICAgICBHQzNEZW51bSBlcnJvciA9IGNvbXB1dGVJbWFnZVNpemVJ
bkJ5dGVzKGZvcm1hdCwgdHlwZSwgd2lkdGgsIGhlaWdodCwgdW5wYWNrQWxpZ25tZW50LCAmc2l6
ZSwgMCk7CiAgICAgICAgIGlmIChlcnJvciAhPSBHcmFwaGljc0NvbnRleHQzRDo6Tk9fRVJST1Ip
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dDNELmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQzRC5oCmluZGV4IDQxMDY2MTc5MTVkODlkOTYzZWFkNWNhMjA2N2MyZDE2ZGYwZWQwMjcu
LmZiMDRiNWJmZmYyN2U4MjViZGYzMzExOGUxOTlkZTY1NzhmZmY3NjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaApAQCAt
MTMwNiw3ICsxMzA2LDYgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgaW50IG1fY3VycmVudFdp
ZHRoLCBtX2N1cnJlbnRIZWlnaHQ7Ci0gICAgYm9vbCBpc1Jlc291cmNlU2FmZSgpOwogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgUmV0YWluUHRyPFdlYkdMTGF5ZXI+IG1fd2ViR0xMYXllcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCmluZGV4IDU1
ZDVjNjhkY2UyYTM2YWEwM2FjYTg3MjlmZWY0ZWY3ZDQ4MTc2YTQuLjA0ZTg1MjIxZGFkN2NjMWQ0
MGNkODY2MTk0N2ZmOGY3ZGJlMTk2M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dDNET3BlbkdMQ29tbW9uLmNwcApAQCAtMTU2LDExICsxNTYsNiBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5j
aWxFeHRlbgogICAgIH0KIH0KIAotYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6aXNSZXNvdXJjZVNh
ZmUoKQotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyKQog
ewogICAgIGludCByb3dCeXRlcyA9IG1fY3VycmVudFdpZHRoICogNDsK
</data>
<flag name="review"
          id="317510"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294861</attachid>
            <date>2016-11-15 11:56:26 -0800</date>
            <delta_ts>2016-11-15 12:07:21 -0800</delta_ts>
            <desc>Patch for committing</desc>
            <filename>bug-164782-20161115115624.patch</filename>
            <type>text/plain</type>
            <size>32438</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4NzQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWFiYzQyNjY4YzQ0MjA2
NGJkN2FhMTMwYjRjMmNjZjAzODVmMzE5My4uMzVlNTBjZTlmMGYyODY4ODY4ZTUxZWJjZTBlYTYy
NzY2NGI4MjE4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE2LTExLTE1ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdMXSBS
ZW1vdmUgdW51c2VkIENocm9taXVtLXNwZWNpZmljIE9wZW5HTCBleHRlbnNpb25zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ3ODIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVj
YXVzZSB0aGVyZSBpcyBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmNvcHlCdWZmZXJTdWJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbik6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21w
cmVzc2VkVGV4dHVyZVMzVEM6OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xEZXB0aFRleHR1cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xEZXB0aFRleHR1cmU6
OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTERyYXdCdWZmZXJzOjpzYXRpc2ZpZXNXZWJHTFJlcXVp
cmVtZW50cyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjpvbkFjY2Vzcyk6CisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmdldEV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmNsZWFyKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnNldHVwRmxhZ3MpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6YnVmZmVyRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpidWZmZXJTdWJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OmNvcHlUZXhTdWJJbWFnZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlRHJhd0FycmF5cyk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZURyYXdFbGVtZW50cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpyZWFkUGl4ZWxzKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleEltYWdlMkRC
YXNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNvcHlU
ZXhJbWFnZTJEKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjppc0dM
RVMyTlBPVFN0cmljdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjppc0Vycm9yR2VuZXJhdGVkT25PdXRPZkJvdW5kc0FjY2Vzc2VzKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmlzUmVzb3VyY2VTYWZl
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQz
RC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dGV4SW1hZ2UyRFJl
c291cmNlU2FmZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
M0QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
M0RPcGVuR0xDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OmlzUmVzb3VyY2VTYWZlKTogRGVsZXRlZC4KKwogMjAxNi0xMS0xNCAgTXlsZXMgQy4gTWF4Zmll
bGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJHTF0gTWlncmF0ZSBjb25z
dHJ1Y3Rpb24gZnVuY3Rpb25zIGZyb20gcG9pbnRlcnMgdG8gcmVmZXJlbmNlcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcApp
bmRleCA0NmM0NmRkNTJjOGY3YWJlYmQ1M2M5NWNjYzUxMzhmNWM2NTI3NDk0Li5jZTRmMGVmMmYz
NWU1MjYwZDI1ZjcyOWRjMjlkMjQ3YTIwOWVjMzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMTk4LDExICsx
OTgsOSBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNvcHlCdWZmZXJTdWJEYXRhKEdD
M0RlbnVtIHJlYWRUYXJnZXQsIEdDM0RlbnVtIHdyaQogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgaWYgKCF0aGlzLT5pc0Vycm9yR2VuZXJhdGVkT25PdXRPZkJvdW5kc0FjY2Vzc2VzKCkp
IHsKLSAgICAgICAgaWYgKCF3cml0ZUJ1ZmZlci0+YXNzb2NpYXRlQ29weUJ1ZmZlclN1YkRhdGEo
KnJlYWRCdWZmZXIsIGNoZWNrZWRSZWFkT2Zmc2V0LnVuc2FmZUdldCgpLCBjaGVja2VkV3JpdGVP
ZmZzZXQudW5zYWZlR2V0KCksIGNoZWNrZWRTaXplLnVuc2FmZUdldCgpKSkgewotICAgICAgICAg
ICAgdGhpcy0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFM
VUUsICJjb3B5QnVmZmVyU3ViRGF0YSIsICJvZmZzZXQgb3V0IG9mIHJhbmdlIik7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICBpZiAoIXdyaXRlQnVmZmVyLT5hc3NvY2lhdGVD
b3B5QnVmZmVyU3ViRGF0YSgqcmVhZEJ1ZmZlciwgY2hlY2tlZFJlYWRPZmZzZXQudW5zYWZlR2V0
KCksIGNoZWNrZWRXcml0ZU9mZnNldC51bnNhZmVHZXQoKSwgY2hlY2tlZFNpemUudW5zYWZlR2V0
KCkpKSB7CisgICAgICAgIHRoaXMtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNE
OjpJTlZBTElEX1ZBTFVFLCAiY29weUJ1ZmZlclN1YkRhdGEiLCAib2Zmc2V0IG91dCBvZiByYW5n
ZSIpOworICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgbV9jb250ZXh0LT5tb3ZlRXJyb3Jz
VG9TeW50aGV0aWNFcnJvckxpc3QoKTsKQEAgLTQ0MCw3ICs0MzgsNyBAQCB2b2lkIFdlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmNsZWFyKEdDM0RiaXRmaWVsZCBtYXNrKQogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIGNvbnN0IGNoYXIqIHJlYXNvbiA9ICJmcmFtZWJ1ZmZlciBpbmNvbXBsZXRl
IjsKLSAgICBpZiAobV9mcmFtZWJ1ZmZlckJpbmRpbmcgJiYgIW1fZnJhbWVidWZmZXJCaW5kaW5n
LT5vbkFjY2VzcyhncmFwaGljc0NvbnRleHQzRCgpLCAhaXNSZXNvdXJjZVNhZmUoKSwgJnJlYXNv
bikpIHsKKyAgICBpZiAobV9mcmFtZWJ1ZmZlckJpbmRpbmcgJiYgIW1fZnJhbWVidWZmZXJCaW5k
aW5nLT5vbkFjY2VzcyhncmFwaGljc0NvbnRleHQzRCgpLCAmcmVhc29uKSkgewogICAgICAgICBz
eW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9GUkFNRUJVRkZFUl9P
UEVSQVRJT04sICJjbGVhciIsIHJlYXNvbik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC05
MTQsMTAgKzkxMiw4IEBAIFdlYkdMRXh0ZW5zaW9uKiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpn
ZXRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIH0KICAgICBpZiAoZXF1YWxJZ25v
cmluZ0FTQ0lJQ2FzZShuYW1lLCAiV0VCR0xfZGVwdGhfdGV4dHVyZSIpCiAgICAgICAgICYmIFdl
YkdMRGVwdGhUZXh0dXJlOjpzdXBwb3J0ZWQoKmdyYXBoaWNzQ29udGV4dDNEKCkpKSB7Ci0gICAg
ICAgIGlmICghbV93ZWJnbERlcHRoVGV4dHVyZSkgewotICAgICAgICAgICAgbV9jb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfQ0hST01JVU1fZGVwdGhfdGV4dHVyZSIp
OworICAgICAgICBpZiAoIW1fd2ViZ2xEZXB0aFRleHR1cmUpCiAgICAgICAgICAgICBtX3dlYmds
RGVwdGhUZXh0dXJlID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTERlcHRoVGV4dHVyZT4oKnRoaXMp
OwotICAgICAgICB9CiAgICAgICAgIHJldHVybiBtX3dlYmdsRGVwdGhUZXh0dXJlLmdldCgpOwog
ICAgIH0KICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiV0VCR0xfZGVidWdf
cmVuZGVyZXJfaW5mbyIpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHAKaW5kZXggNmU5NGZiNTM4NjdkOThl
Zjg1MDQxNjg4OTY4YmIxYWM3MGJjNTRiMS4uNDBiN2Y1M2E4ODQ2NDA1ODZkNTc3NDI0ZmFlN2Jl
YzE2YTdiNmI5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xD
b21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmNwcApAQCAtNTYsOSArNTYsNyBAQCBib29sIFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZSYgY29udGV4dCkKIHsKICAgICBhdXRvJiBleHRlbnNpb25zID0gY29udGV4dC5ncmFwaGlj
c0NvbnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCk7CiAgICAgcmV0dXJuIGV4dGVuc2lvbnMuc3Vw
cG9ydHMoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGMiKQotICAgICAgICB8fCAoZXh0
ZW5zaW9ucy5zdXBwb3J0cygiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MSIpCi0gICAg
ICAgICAgICAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9DSFJPTUlVTV90ZXh0dXJlX2NvbXBy
ZXNzaW9uX2R4dDMiKQotICAgICAgICAgICAgJiYgZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfQ0hS
T01JVU1fdGV4dHVyZV9jb21wcmVzc2lvbl9keHQ1IikpOworICAgICAgICB8fCBleHRlbnNpb25z
LnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIik7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMRGVwdGhUZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
RGVwdGhUZXh0dXJlLmNwcAppbmRleCBkZjIzZGZlZjJlYzU5NTZkOTQ3OGE4YjY5NjYwMzJlM2Uy
NmUwYWJjLi4yOWY5YjY0ZTRmMjU2NDZlZDk1ZjE1MzE3OTMwMmU1NzFmOGQ4OWI5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZXB0aFRleHR1cmUuY3BwCkBAIC01
MCw4ICs1MCw3IEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1lIFdlYkdMRGVwdGhUZXh0
dXJlOjpnZXROYW1lKCkgY29uc3QKIGJvb2wgV2ViR0xEZXB0aFRleHR1cmU6OnN1cHBvcnRlZChH
cmFwaGljc0NvbnRleHQzRCYgY29udGV4dCkKIHsKICAgICBFeHRlbnNpb25zM0QmIGV4dGVuc2lv
bnMgPSBjb250ZXh0LmdldEV4dGVuc2lvbnMoKTsKLSAgICByZXR1cm4gZXh0ZW5zaW9ucy5zdXBw
b3J0cygiR0xfQ0hST01JVU1fZGVwdGhfdGV4dHVyZSIpCi0gICAgICAgIHx8IGV4dGVuc2lvbnMu
c3VwcG9ydHMoIkdMX09FU19kZXB0aF90ZXh0dXJlIikKKyAgICByZXR1cm4gZXh0ZW5zaW9ucy5z
dXBwb3J0cygiR0xfT0VTX2RlcHRoX3RleHR1cmUiKQogICAgICAgICB8fCBleHRlbnNpb25zLnN1
cHBvcnRzKCJHTF9BUkJfZGVwdGhfdGV4dHVyZSIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwCmluZGV4IGZjMzAyYmFkOGI0Mzg4MzUx
N2VhYWNkODU3ZGIzNTFmYTIwZGJhYWQuLjA4OTFjMDJhOWI4ODlkMGU3YmE4ZTkwNTVmMmJmMWE2
YzFlMTA5ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJh
d0J1ZmZlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1
ZmZlcnMuY3BwCkBAIC0xMDMsOSArMTAzLDggQEAgYm9vbCBXZWJHTERyYXdCdWZmZXJzOjpzYXRp
c2ZpZXNXZWJHTFJlcXVpcmVtZW50cyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiB3ZWIKICAg
ICBjb250ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVS
LCBmYm8pOwogCiAgICAgY29uc3QgdW5zaWduZWQgY2hhciBidWZmZXJbNF0gPSB7IDAsIDAsIDAs
IDAgfTsgLy8gdGV4dHVyZXMgYXJlIHJlcXVpcmVkIHRvIGJlIGluaXRpYWxpemVkIGZvciBvdGhl
ciBwb3J0cy4KLSAgICBib29sIHN1cHBvcnRzRGVwdGggPSAoY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpLnN1cHBvcnRzKCJHTF9DSFJPTUlVTV9kZXB0aF90ZXh0dXJlIikKLSAgICAgICAgfHwgY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfZGVwdGhfdGV4dHVyZSIpCi0g
ICAgICAgIHx8IGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfQVJCX2RlcHRo
X3RleHR1cmUiKSk7CisgICAgYm9vbCBzdXBwb3J0c0RlcHRoID0gY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfZGVwdGhfdGV4dHVyZSIpCisgICAgICAgIHx8IGNvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfQVJCX2RlcHRoX3RleHR1cmUiKTsKICAg
ICBib29sIHN1cHBvcnRzRGVwdGhTdGVuY2lsID0gKGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5z
dXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIikKICAgICAgICAgfHwgY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwi
KSk7CiAgICAgUGxhdGZvcm0zRE9iamVjdCBkZXB0aFN0ZW5jaWwgPSAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcAppbmRleCAyYmE0MWI5NmM5
NDc4MzU0MzY5MjhjNjJlNTA3ZjRhOGU1MzBmOGRiLi5mOWI3YzIwMjI4ODNkNTc5MmIwMjVmMDIx
MWQwMmU0ZGE2YjY2NjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTEZyYW1lYnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TEZyYW1lYnVmZmVyLmNwcApAQCAtNDc5LDEzICs0NzksMTEgQEAgR0MzRGVudW0gV2ViR0xGcmFt
ZWJ1ZmZlcjo6Y2hlY2tTdGF0dXMoY29uc3QgY2hhcioqIHJlYXNvbikgY29uc3QKICAgICByZXR1
cm4gR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX0NPTVBMRVRFOwogfQogCi1ib29sIFdl
YkdMRnJhbWVidWZmZXI6Om9uQWNjZXNzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2QsIGJv
b2wgbmVlZFRvSW5pdGlhbGl6ZUF0dGFjaG1lbnRzLCBjb25zdCBjaGFyKiogcmVhc29uKQorYm9v
bCBXZWJHTEZyYW1lYnVmZmVyOjpvbkFjY2VzcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNk
LCBjb25zdCBjaGFyKiogcmVhc29uKQogewogICAgIGlmIChjaGVja1N0YXR1cyhyZWFzb24pICE9
IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9DT01QTEVURSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIGlmIChuZWVkVG9Jbml0aWFsaXplQXR0YWNobWVudHMpCi0gICAgICAgIHJl
dHVybiBpbml0aWFsaXplQXR0YWNobWVudHMoY29udGV4dDNkLCByZWFzb24pOwotICAgIHJldHVy
biB0cnVlOworICAgIHJldHVybiBpbml0aWFsaXplQXR0YWNobWVudHMoY29udGV4dDNkLCByZWFz
b24pOwogfQogCiBib29sIFdlYkdMRnJhbWVidWZmZXI6Omhhc1N0ZW5jaWxCdWZmZXIoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZl
ci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oCmluZGV4
IDIwZWQyOWNjMDE2ZDgxZDZjNDc2MzcxZGViMWVhZGM1MDdlODNlODguLmJhZWVhZTY2YjI5YTE0
ZDIwYTI0NzhkZGEwOTkwYjhmNWU1OTVmMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTEZyYW1lYnVmZmVyLmgKQEAgLTc4LDcgKzc4LDcgQEAgcHVibGljOgogICAgIC8v
IFJldHVybiBmYWxzZSBpZiB0aGUgZnJhbWVidWZmZXIgaXMgaW5jb21wbGV0ZTsgb3RoZXJ3aXNl
IGluaXRpYWxpemUKICAgICAvLyB0aGUgYnVmZmVycyBpZiB0aGV5IGhhdmVuJ3QgYmVlbiBpbml0
aWFsaXplZCBhbmQKICAgICAvLyBuZWVkVG9Jbml0aWFsaXplQXR0YWNobWVudHMgaXMgdHJ1ZS4K
LSAgICBib29sIG9uQWNjZXNzKEdyYXBoaWNzQ29udGV4dDNEKiwgYm9vbCBuZWVkVG9Jbml0aWFs
aXplQXR0YWNobWVudHMsIGNvbnN0IGNoYXIqKiByZWFzb24pOworICAgIGJvb2wgb25BY2Nlc3Mo
R3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBjaGFyKiogcmVhc29uKTsKIAogICAgIC8vIFNvZnR3
YXJlIHZlcnNpb24gb2YgZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKCksIGV4Y2VwdCB0aGF0IHdo
ZW4KICAgICAvLyBGUkFNRUJVRkZFUl9DT01QTEVURSBpcyByZXR1cm5lZCwgaXQgaXMgc3RpbGwg
cG9zc2libGUgZm9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCBkYzE5YTU1MjQyYWMzMTk2OWI5MDM3N2UxNTEwMmY4
ODhkNWJkNDA1Li5lNjg4NDE2YTkzOTBkY2RlNjM5MDJkODUzOTNmMTQzYTI3OWJhODcxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dC5jcHAKQEAgLTIxMCwxMCArMjEwLDggQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICB9CiAgICAgaWYg
KGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIldFQkdMX2RlcHRoX3RleHR1cmUiKQogICAg
ICAgICAmJiBXZWJHTERlcHRoVGV4dHVyZTo6c3VwcG9ydGVkKCpncmFwaGljc0NvbnRleHQzRCgp
KSkgewotICAgICAgICBpZiAoIW1fd2ViZ2xEZXB0aFRleHR1cmUpIHsKLSAgICAgICAgICAgIG1f
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0NIUk9NSVVNX2RlcHRo
X3RleHR1cmUiKTsKKyAgICAgICAgaWYgKCFtX3dlYmdsRGVwdGhUZXh0dXJlKQogICAgICAgICAg
ICAgbV93ZWJnbERlcHRoVGV4dHVyZSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xEZXB0aFRleHR1
cmU+KCp0aGlzKTsKLSAgICAgICAgfQogICAgICAgICByZXR1cm4gbV93ZWJnbERlcHRoVGV4dHVy
ZS5nZXQoKTsKICAgICB9CiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIldF
QkdMX2RyYXdfYnVmZmVycyIpICYmIHN1cHBvcnRzRHJhd0J1ZmZlcnMoKSkgewpAQCAtNDU2LDcg
KzQ1NCw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpjbGVhcihHQzNEYml0ZmllbGQg
bWFzaykKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjb25zdCBjaGFyKiByZWFzb24gPSAi
ZnJhbWVidWZmZXIgaW5jb21wbGV0ZSI7Ci0gICAgaWYgKG1fZnJhbWVidWZmZXJCaW5kaW5nICYm
ICFtX2ZyYW1lYnVmZmVyQmluZGluZy0+b25BY2Nlc3MoZ3JhcGhpY3NDb250ZXh0M0QoKSwgIWlz
UmVzb3VyY2VTYWZlKCksICZyZWFzb24pKSB7CisgICAgaWYgKG1fZnJhbWVidWZmZXJCaW5kaW5n
ICYmICFtX2ZyYW1lYnVmZmVyQmluZGluZy0+b25BY2Nlc3MoZ3JhcGhpY3NDb250ZXh0M0QoKSwg
JnJlYXNvbikpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6
OklOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OLCAiY2xlYXIiLCByZWFzb24pOwogICAgICAg
ICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCA0ZDQzZTc0ZjYxMTk5M2MyNDk1
ZDNmYWQwZWE1ZDI4OTU5ZDhiZGU4Li40NmZmNWU1ODdlNjBiN2ZkMGNhZDJjNjQ2NmNiNjdlNWNi
YmI4MzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtNTc1LDggKzU3NSw2IEBAIHZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6c2V0dXBGbGFncygpCiAgICAgICAgIG1fc3ludGhlc2l6ZWRF
cnJvcnNUb0NvbnNvbGUgPSBwYWdlLT5zZXR0aW5ncygpLndlYkdMRXJyb3JzVG9Db25zb2xlRW5h
YmxlZCgpOwogCiAgICAgbV9pc0dMRVMyQ29tcGxpYW50ID0gbV9jb250ZXh0LT5pc0dMRVMyQ29t
cGxpYW50KCk7Ci0gICAgbV9pc0Vycm9yR2VuZXJhdGVkT25PdXRPZkJvdW5kc0FjY2Vzc2VzID0g
bV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuaXNFbmFibGVkKCJHTF9DSFJPTUlVTV9zdHJpY3Rf
YXR0cmlicyIpOwotICAgIG1faXNSZXNvdXJjZVNhZmUgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS5pc0VuYWJsZWQoIkdMX0NIUk9NSVVNX3Jlc291cmNlX3NhZmUiKTsKICAgICBpZiAobV9p
c0dMRVMyQ29tcGxpYW50KSB7CiAgICAgICAgIG1faXNHTEVTMk5QT1RTdHJpY3QgPSAhbV9jb250
ZXh0LT5nZXRFeHRlbnNpb25zKCkuaXNFbmFibGVkKCJHTF9PRVNfdGV4dHVyZV9ucG90Iik7CiAg
ICAgICAgIG1faXNEZXB0aFN0ZW5jaWxTdXBwb3J0ZWQgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS5pc0VuYWJsZWQoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCIpOwpAQCAtMTA5MSwx
MSArMTA4OSw5IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YnVmZmVyRGF0YShH
QzNEZW51bSB0YXJnZXQsIGxvbmcgbG9uZyBzaXplLCBHQzNECiAgICAgICAgIHN5bnRoZXNpemVH
TEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFLCAiYnVmZmVyRGF0YSIsICJz
aXplID09IDAiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoIWlzRXJyb3JHZW5l
cmF0ZWRPbk91dE9mQm91bmRzQWNjZXNzZXMoKSkgewotICAgICAgICBpZiAoIWJ1ZmZlci0+YXNz
b2NpYXRlQnVmZmVyRGF0YShzdGF0aWNfY2FzdDxHQzNEc2l6ZWlwdHI+KHNpemUpKSkgewotICAg
ICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFM
VUUsICJidWZmZXJEYXRhIiwgImludmFsaWQgYnVmZmVyIik7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KKyAgICBpZiAoIWJ1ZmZlci0+YXNzb2NpYXRlQnVmZmVyRGF0YShzdGF0aWNf
Y2FzdDxHQzNEc2l6ZWlwdHI+KHNpemUpKSkgeworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihH
cmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSwgImJ1ZmZlckRhdGEiLCAiaW52YWxpZCBi
dWZmZXIiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIG1fY29udGV4dC0+bW92ZUVy
cm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7CkBAIC0xMTE5LDExICsxMTE1LDkgQEAgdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpidWZmZXJEYXRhKEdDM0RlbnVtIHRhcmdldCwgT3B0
aW9uYWw8QnVmZmVyRGF0YVMKICAgICAgICAgcmV0dXJuOwogCiAgICAgV1RGOjp2aXNpdChbJl0o
YXV0byYgZGF0YSkgewotICAgICAgICBpZiAoIXRoaXMtPmlzRXJyb3JHZW5lcmF0ZWRPbk91dE9m
Qm91bmRzQWNjZXNzZXMoKSkgewotICAgICAgICAgICAgaWYgKCFidWZmZXItPmFzc29jaWF0ZUJ1
ZmZlckRhdGEoZGF0YS5nZXQoKSkpIHsKLSAgICAgICAgICAgICAgICB0aGlzLT5zeW50aGVzaXpl
R0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSwgImJ1ZmZlckRhdGEiLCAi
aW52YWxpZCBidWZmZXIiKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9
CisgICAgICAgIGlmICghYnVmZmVyLT5hc3NvY2lhdGVCdWZmZXJEYXRhKGRhdGEuZ2V0KCkpKSB7
CisgICAgICAgICAgICB0aGlzLT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6
SU5WQUxJRF9WQUxVRSwgImJ1ZmZlckRhdGEiLCAiaW52YWxpZCBidWZmZXIiKTsKKyAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIG1fY29udGV4dC0+bW92ZUVycm9yc1Rv
U3ludGhldGljRXJyb3JMaXN0KCk7CkBAIC0xMTUwLDExICsxMTQ0LDkgQEAgdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjpidWZmZXJTdWJEYXRhKEdDM0RlbnVtIHRhcmdldCwgbG9uZyBs
b25nIG9mZnNldCwKICAgICAgICAgcmV0dXJuOwogCiAgICAgV1RGOjp2aXNpdChbJl0oYXV0byYg
ZGF0YSkgewotICAgICAgICBpZiAoIXRoaXMtPmlzRXJyb3JHZW5lcmF0ZWRPbk91dE9mQm91bmRz
QWNjZXNzZXMoKSkgewotICAgICAgICAgICAgaWYgKCFidWZmZXItPmFzc29jaWF0ZUJ1ZmZlclN1
YkRhdGEoc3RhdGljX2Nhc3Q8R0MzRGludHB0cj4ob2Zmc2V0KSwgZGF0YS5nZXQoKSkpIHsKLSAg
ICAgICAgICAgICAgICB0aGlzLT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6
SU5WQUxJRF9WQUxVRSwgImJ1ZmZlclN1YkRhdGEiLCAib2Zmc2V0IG91dCBvZiByYW5nZSIpOwot
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgaWYgKCFidWZm
ZXItPmFzc29jaWF0ZUJ1ZmZlclN1YkRhdGEoc3RhdGljX2Nhc3Q8R0MzRGludHB0cj4ob2Zmc2V0
KSwgZGF0YS5nZXQoKSkpIHsKKyAgICAgICAgICAgIHRoaXMtPnN5bnRoZXNpemVHTEVycm9yKEdy
YXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFLCAiYnVmZmVyU3ViRGF0YSIsICJvZmZzZXQg
b3V0IG9mIHJhbmdlIik7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAg
ICBtX2NvbnRleHQtPm1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpOwpAQCAtMTM1NSw0
NSArMTM0Nyw0MSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNvcHlUZXhTdWJJ
bWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbAogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIGNvbnN0IGNoYXIqIHJlYXNvbiA9ICJmcmFtZWJ1ZmZlciBpbmNvbXBsZXRlIjsK
LSAgICBpZiAobV9mcmFtZWJ1ZmZlckJpbmRpbmcgJiYgIW1fZnJhbWVidWZmZXJCaW5kaW5nLT5v
bkFjY2VzcyhncmFwaGljc0NvbnRleHQzRCgpLCAhaXNSZXNvdXJjZVNhZmUoKSwgJnJlYXNvbikp
IHsKKyAgICBpZiAobV9mcmFtZWJ1ZmZlckJpbmRpbmcgJiYgIW1fZnJhbWVidWZmZXJCaW5kaW5n
LT5vbkFjY2VzcyhncmFwaGljc0NvbnRleHQzRCgpLCAmcmVhc29uKSkgewogICAgICAgICBzeW50
aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVS
QVRJT04sICJjb3B5VGV4U3ViSW1hZ2UyRCIsIHJlYXNvbik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgY2xlYXJJZkNvbXBvc2l0ZWQoKTsKLSAgICBpZiAoaXNSZXNvdXJjZVNhZmUoKSkK
LSAgICAgICAgbV9jb250ZXh0LT5jb3B5VGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zm
c2V0LCB5b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKLSAgICBlbHNlIHsKLSAgICAgICAg
R0MzRGludCBjbGlwcGVkWCwgY2xpcHBlZFk7Ci0gICAgICAgIEdDM0RzaXplaSBjbGlwcGVkV2lk
dGgsIGNsaXBwZWRIZWlnaHQ7Ci0gICAgICAgIGlmIChjbGlwMkQoeCwgeSwgd2lkdGgsIGhlaWdo
dCwgZ2V0Qm91bmRGcmFtZWJ1ZmZlcldpZHRoKCksIGdldEJvdW5kRnJhbWVidWZmZXJIZWlnaHQo
KSwgJmNsaXBwZWRYLCAmY2xpcHBlZFksICZjbGlwcGVkV2lkdGgsICZjbGlwcGVkSGVpZ2h0KSkg
ewotICAgICAgICAgICAgR0MzRGVudW0gZm9ybWF0OwotICAgICAgICAgICAgR0MzRGVudW0gdHlw
ZTsKLSAgICAgICAgICAgIGlmICghR3JhcGhpY3NDb250ZXh0M0Q6OnBvc3NpYmxlRm9ybWF0QW5k
VHlwZUZvckludGVybmFsRm9ybWF0KHRleC0+Z2V0SW50ZXJuYWxGb3JtYXQodGFyZ2V0LCBsZXZl
bCksIGZvcm1hdCwgdHlwZSkpIHsKLSAgICAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihH
cmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9FTlVNLCAiY29weVRleFN1YkltYWdlMkQiLCAiVGV4
dHVyZSBoYXMgdW5rbm93biBpbnRlcm5hbCBmb3JtYXQiKTsKKworICAgIEdDM0RpbnQgY2xpcHBl
ZFgsIGNsaXBwZWRZOworICAgIEdDM0RzaXplaSBjbGlwcGVkV2lkdGgsIGNsaXBwZWRIZWlnaHQ7
CisgICAgaWYgKGNsaXAyRCh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBnZXRCb3VuZEZyYW1lYnVmZmVy
V2lkdGgoKSwgZ2V0Qm91bmRGcmFtZWJ1ZmZlckhlaWdodCgpLCAmY2xpcHBlZFgsICZjbGlwcGVk
WSwgJmNsaXBwZWRXaWR0aCwgJmNsaXBwZWRIZWlnaHQpKSB7CisgICAgICAgIEdDM0RlbnVtIGZv
cm1hdDsKKyAgICAgICAgR0MzRGVudW0gdHlwZTsKKyAgICAgICAgaWYgKCFHcmFwaGljc0NvbnRl
eHQzRDo6cG9zc2libGVGb3JtYXRBbmRUeXBlRm9ySW50ZXJuYWxGb3JtYXQodGV4LT5nZXRJbnRl
cm5hbEZvcm1hdCh0YXJnZXQsIGxldmVsKSwgZm9ybWF0LCB0eXBlKSkgeworICAgICAgICAgICAg
c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSwgImNvcHlU
ZXhTdWJJbWFnZTJEIiwgIlRleHR1cmUgaGFzIHVua25vd24gaW50ZXJuYWwgZm9ybWF0Iik7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHVu
c2lnbmVkIGNoYXJbXT4gemVybzsKKyAgICAgICAgaWYgKHdpZHRoICYmIGhlaWdodCkgeworICAg
ICAgICAgICAgdW5zaWduZWQgc2l6ZTsKKyAgICAgICAgICAgIEdDM0RlbnVtIGVycm9yID0gbV9j
b250ZXh0LT5jb21wdXRlSW1hZ2VTaXplSW5CeXRlcyhmb3JtYXQsIHR5cGUsIHdpZHRoLCBoZWln
aHQsIG1fdW5wYWNrQWxpZ25tZW50LCAmc2l6ZSwgMCk7CisgICAgICAgICAgICBpZiAoZXJyb3Ig
IT0gR3JhcGhpY3NDb250ZXh0M0Q6Ok5PX0VSUk9SKSB7CisgICAgICAgICAgICAgICAgc3ludGhl
c2l6ZUdMRXJyb3IoZXJyb3IsICJjb3B5VGV4U3ViSW1hZ2UyRCIsICJiYWQgZGltZW5zaW9ucyIp
OwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjx1bnNpZ25lZCBjaGFyW10+IHplcm87Ci0gICAgICAgICAgICBpZiAod2lk
dGggJiYgaGVpZ2h0KSB7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHNpemU7Ci0gICAg
ICAgICAgICAgICAgR0MzRGVudW0gZXJyb3IgPSBtX2NvbnRleHQtPmNvbXB1dGVJbWFnZVNpemVJ
bkJ5dGVzKGZvcm1hdCwgdHlwZSwgd2lkdGgsIGhlaWdodCwgbV91bnBhY2tBbGlnbm1lbnQsICZz
aXplLCAwKTsKLSAgICAgICAgICAgICAgICBpZiAoZXJyb3IgIT0gR3JhcGhpY3NDb250ZXh0M0Q6
Ok5PX0VSUk9SKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKGVycm9y
LCAiY29weVRleFN1YkltYWdlMkQiLCAiYmFkIGRpbWVuc2lvbnMiKTsKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB6ZXJvID0g
c3RkOjptYWtlX3VuaXF1ZTx1bnNpZ25lZCBjaGFyW10+KHNpemUpOwotICAgICAgICAgICAgICAg
IGlmICghemVybykgewotICAgICAgICAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSwgImNvcHlUZXhTdWJJbWFnZTJEIiwgIm91dCBv
ZiBtZW1vcnkiKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICBtZW1zZXQoemVyby5nZXQoKSwgMCwgc2l6ZSk7CisgICAgICAg
ICAgICB6ZXJvID0gc3RkOjptYWtlX3VuaXF1ZTx1bnNpZ25lZCBjaGFyW10+KHNpemUpOworICAg
ICAgICAgICAgaWYgKCF6ZXJvKSB7CisgICAgICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3Io
R3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUsICJjb3B5VGV4U3ViSW1hZ2UyRCIsICJv
dXQgb2YgbWVtb3J5Iik7CisgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgbV9jb250ZXh0LT50ZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZz
ZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgemVyby5nZXQoKSk7Ci0g
ICAgICAgICAgICBpZiAoY2xpcHBlZFdpZHRoID4gMCAmJiBjbGlwcGVkSGVpZ2h0ID4gMCkKLSAg
ICAgICAgICAgICAgICBtX2NvbnRleHQtPmNvcHlUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWws
IHhvZmZzZXQgKyBjbGlwcGVkWCAtIHgsIHlvZmZzZXQgKyBjbGlwcGVkWSAtIHksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGlwcGVkWCwgY2xpcHBlZFks
IGNsaXBwZWRXaWR0aCwgY2xpcHBlZEhlaWdodCk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgbV9jb250ZXh0LT5jb3B5VGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5
b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKLSAgICB9CisgICAgICAgICAgICBtZW1zZXQo
emVyby5nZXQoKSwgMCwgc2l6ZSk7CisgICAgICAgIH0KKyAgICAgICAgbV9jb250ZXh0LT50ZXhT
dWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQs
IGZvcm1hdCwgdHlwZSwgemVyby5nZXQoKSk7CisgICAgICAgIGlmIChjbGlwcGVkV2lkdGggPiAw
ICYmIGNsaXBwZWRIZWlnaHQgPiAwKQorICAgICAgICAgICAgbV9jb250ZXh0LT5jb3B5VGV4U3Vi
SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0ICsgY2xpcHBlZFggLSB4LCB5b2Zmc2V0ICsg
Y2xpcHBlZFkgLSB5LCBjbGlwcGVkWCwgY2xpcHBlZFksIGNsaXBwZWRXaWR0aCwgY2xpcHBlZEhl
aWdodCk7CisgICAgfSBlbHNlCisgICAgICAgIG1fY29udGV4dC0+Y29weVRleFN1YkltYWdlMkQo
dGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCk7CiB9
CiAKIFJlZlB0cjxXZWJHTEJ1ZmZlcj4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y3JlYXRl
QnVmZmVyKCkKQEAgLTE4MTgsMjkgKzE4MDYsMjIgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjp2YWxpZGF0ZURyYXdBcnJheXMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQzMK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmICghaXNFcnJvckdlbmVyYXRl
ZE9uT3V0T2ZCb3VuZHNBY2Nlc3NlcygpKSB7Ci0gICAgICAgIC8vIEVuc3VyZSB3ZSBoYXZlIGEg
dmFsaWQgcmVuZGVyaW5nIHN0YXRlCi0gICAgICAgIENoZWNrZWQ8R0MzRGludCwgUmVjb3JkT3Zl
cmZsb3c+IGNoZWNrZWRGaXJzdChmaXJzdCk7Ci0gICAgICAgIENoZWNrZWQ8R0MzRGludCwgUmVj
b3JkT3ZlcmZsb3c+IGNoZWNrZWRDb3VudChjb3VudCk7Ci0gICAgICAgIENoZWNrZWQ8R0MzRGlu
dCwgUmVjb3JkT3ZlcmZsb3c+IGNoZWNrZWRTdW0gPSBjaGVja2VkRmlyc3QgKyBjaGVja2VkQ291
bnQ7Ci0gICAgICAgIENoZWNrZWQ8R0MzRGludCwgUmVjb3JkT3ZlcmZsb3c+IGNoZWNrZWRQcmlt
aXRpdmVDb3VudChwcmltaXRpdmVDb3VudCk7Ci0gICAgICAgIGlmIChjaGVja2VkU3VtLmhhc092
ZXJmbG93ZWQoKSB8fCBjaGVja2VkUHJpbWl0aXZlQ291bnQuaGFzT3ZlcmZsb3dlZCgpIHx8ICF2
YWxpZGF0ZVZlcnRleEF0dHJpYnV0ZXMoY2hlY2tlZFN1bS51bnNhZmVHZXQoKSwgY2hlY2tlZFBy
aW1pdGl2ZUNvdW50LnVuc2FmZUdldCgpKSkgewotICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJy
b3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OLCBmdW5jdGlvbk5hbWUsICJh
dHRlbXB0IHRvIGFjY2VzcyBvdXQgb2YgYm91bmRzIGFycmF5cyIpOwotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGlmICghdmFsaWRhdGVTaW11bGF0ZWRWZXJ0
ZXhBdHRyaWIwKGNoZWNrZWRTdW0udW5zYWZlR2V0KCkgLSAxKSkgewotICAgICAgICAgICAgc3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OLCBmdW5j
dGlvbk5hbWUsICJhdHRlbXB0IHRvIGFjY2VzcyBvdXRzaWRlIHRoZSBib3VuZHMgb2YgdGhlIHNp
bXVsYXRlZCB2ZXJ0ZXhBdHRyaWIwIGFycmF5Iik7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBpZiAoIXZhbGlkYXRlVmVydGV4QXR0
cmlidXRlcygwKSkgewotICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250
ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OLCBmdW5jdGlvbk5hbWUsICJhdHRyaWJzIG5vdCBzZXR1
cCBjb3JyZWN0bHkiKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQorICAg
IC8vIEVuc3VyZSB3ZSBoYXZlIGEgdmFsaWQgcmVuZGVyaW5nIHN0YXRlLgorICAgIENoZWNrZWQ8
R0MzRGludCwgUmVjb3JkT3ZlcmZsb3c+IGNoZWNrZWRGaXJzdChmaXJzdCk7CisgICAgQ2hlY2tl
ZDxHQzNEaW50LCBSZWNvcmRPdmVyZmxvdz4gY2hlY2tlZENvdW50KGNvdW50KTsKKyAgICBDaGVj
a2VkPEdDM0RpbnQsIFJlY29yZE92ZXJmbG93PiBjaGVja2VkU3VtID0gY2hlY2tlZEZpcnN0ICsg
Y2hlY2tlZENvdW50OworICAgIENoZWNrZWQ8R0MzRGludCwgUmVjb3JkT3ZlcmZsb3c+IGNoZWNr
ZWRQcmltaXRpdmVDb3VudChwcmltaXRpdmVDb3VudCk7CisgICAgaWYgKGNoZWNrZWRTdW0uaGFz
T3ZlcmZsb3dlZCgpIHx8IGNoZWNrZWRQcmltaXRpdmVDb3VudC5oYXNPdmVyZmxvd2VkKCkgfHwg
IXZhbGlkYXRlVmVydGV4QXR0cmlidXRlcyhjaGVja2VkU3VtLnVuc2FmZUdldCgpLCBjaGVja2Vk
UHJpbWl0aXZlQ291bnQudW5zYWZlR2V0KCkpKSB7CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTiwgZnVuY3Rpb25OYW1lLCAiYXR0
ZW1wdCB0byBhY2Nlc3Mgb3V0IG9mIGJvdW5kcyBhcnJheXMiKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKyAgICBpZiAoIXZhbGlkYXRlU2ltdWxhdGVkVmVydGV4QXR0cmliMChjaGVj
a2VkU3VtLnVuc2FmZUdldCgpIC0gMSkpIHsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OLCBmdW5jdGlvbk5hbWUsICJhdHRlbXB0
IHRvIGFjY2VzcyBvdXRzaWRlIHRoZSBib3VuZHMgb2YgdGhlIHNpbXVsYXRlZCB2ZXJ0ZXhBdHRy
aWIwIGFycmF5Iik7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBjb25zdCBj
aGFyKiByZWFzb24gPSAiZnJhbWVidWZmZXIgaW5jb21wbGV0ZSI7Ci0gICAgaWYgKG1fZnJhbWVi
dWZmZXJCaW5kaW5nICYmICFtX2ZyYW1lYnVmZmVyQmluZGluZy0+b25BY2Nlc3MoZ3JhcGhpY3ND
b250ZXh0M0QoKSwgIWlzUmVzb3VyY2VTYWZlKCksICZyZWFzb24pKSB7CisgICAgaWYgKG1fZnJh
bWVidWZmZXJCaW5kaW5nICYmICFtX2ZyYW1lYnVmZmVyQmluZGluZy0+b25BY2Nlc3MoZ3JhcGhp
Y3NDb250ZXh0M0QoKSwgJnJlYXNvbikpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OLCBmdW5jdGlvbk5h
bWUsIHJlYXNvbik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0xODg5LDQ0ICsx
ODcwLDM2IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVEcmF3RWxl
bWVudHMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHCiAgICAgICAgIHN5bnRoZXNpemVHTEVy
cm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTiwgZnVuY3Rpb25OYW1lLCAi
bm8gRUxFTUVOVF9BUlJBWV9CVUZGRVIgYm91bmQiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KKworICAgIC8vIEVuc3VyZSB3ZSBoYXZlIGEgdmFsaWQgcmVuZGVyaW5nIHN0YXRlLgor
ICAgIGlmICghdmFsaWRhdGVFbGVtZW50QXJyYXlTaXplKGNvdW50LCB0eXBlLCBzdGF0aWNfY2Fz
dDxHQzNEaW50cHRyPihvZmZzZXQpKSkgeworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwgInJlcXVlc3Qg
b3V0IG9mIGJvdW5kcyBmb3IgY3VycmVudCBFTEVNRU5UX0FSUkFZX0JVRkZFUiIpOworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGlmICghY291bnQpCisgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAKLSAgICBpZiAoIWlzRXJyb3JHZW5lcmF0ZWRPbk91dE9mQm91bmRzQWNjZXNz
ZXMoKSkgewotICAgICAgICAvLyBFbnN1cmUgd2UgaGF2ZSBhIHZhbGlkIHJlbmRlcmluZyBzdGF0
ZQotICAgICAgICBpZiAoIXZhbGlkYXRlRWxlbWVudEFycmF5U2l6ZShjb3VudCwgdHlwZSwgc3Rh
dGljX2Nhc3Q8R0MzRGludHB0cj4ob2Zmc2V0KSkpIHsKLSAgICAgICAgICAgIHN5bnRoZXNpemVH
TEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTiwgZnVuY3Rpb25OYW1l
LCAicmVxdWVzdCBvdXQgb2YgYm91bmRzIGZvciBjdXJyZW50IEVMRU1FTlRfQVJSQVlfQlVGRkVS
Iik7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFj
b3VudCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgCi0gICAgICAgIENoZWNr
ZWQ8R0MzRGludCwgUmVjb3JkT3ZlcmZsb3c+IGNoZWNrZWRDb3VudChjb3VudCk7Ci0gICAgICAg
IENoZWNrZWQ8R0MzRGludCwgUmVjb3JkT3ZlcmZsb3c+IGNoZWNrZWRQcmltaXRpdmVDb3VudChw
cmltaXRpdmVDb3VudCk7Ci0gICAgICAgIGlmIChjaGVja2VkQ291bnQuaGFzT3ZlcmZsb3dlZCgp
IHx8IGNoZWNrZWRQcmltaXRpdmVDb3VudC5oYXNPdmVyZmxvd2VkKCkpIHsKKyAgICBDaGVja2Vk
PEdDM0RpbnQsIFJlY29yZE92ZXJmbG93PiBjaGVja2VkQ291bnQoY291bnQpOworICAgIENoZWNr
ZWQ8R0MzRGludCwgUmVjb3JkT3ZlcmZsb3c+IGNoZWNrZWRQcmltaXRpdmVDb3VudChwcmltaXRp
dmVDb3VudCk7CisgICAgaWYgKGNoZWNrZWRDb3VudC5oYXNPdmVyZmxvd2VkKCkgfHwgY2hlY2tl
ZFByaW1pdGl2ZUNvdW50Lmhhc092ZXJmbG93ZWQoKSkgeworICAgICAgICBzeW50aGVzaXplR0xF
cnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwg
ImF0dGVtcHQgdG8gYWNjZXNzIG91dCBvZiBib3VuZHMgYXJyYXlzIik7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisgICAgCisgICAgaWYgKCF2YWxpZGF0ZUluZGV4QXJyYXlDb25zZXJ2
YXRpdmUodHlwZSwgbnVtRWxlbWVudHMpIHx8ICF2YWxpZGF0ZVZlcnRleEF0dHJpYnV0ZXMobnVt
RWxlbWVudHMsIGNoZWNrZWRQcmltaXRpdmVDb3VudC51bnNhZmVHZXQoKSkpIHsKKyAgICAgICAg
aWYgKCF2YWxpZGF0ZUluZGV4QXJyYXlQcmVjaXNlKGNoZWNrZWRDb3VudC51bnNhZmVHZXQoKSwg
dHlwZSwgc3RhdGljX2Nhc3Q8R0MzRGludHB0cj4ob2Zmc2V0KSwgbnVtRWxlbWVudHMpIHx8ICF2
YWxpZGF0ZVZlcnRleEF0dHJpYnV0ZXMobnVtRWxlbWVudHMsIGNoZWNrZWRQcmltaXRpdmVDb3Vu
dC51bnNhZmVHZXQoKSkpIHsKICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNz
Q29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTiwgZnVuY3Rpb25OYW1lLCAiYXR0ZW1wdCB0byBh
Y2Nlc3Mgb3V0IG9mIGJvdW5kcyBhcnJheXMiKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKCF2YWxpZGF0ZUluZGV4QXJyYXlDb25z
ZXJ2YXRpdmUodHlwZSwgbnVtRWxlbWVudHMpIHx8ICF2YWxpZGF0ZVZlcnRleEF0dHJpYnV0ZXMo
bnVtRWxlbWVudHMsIGNoZWNrZWRQcmltaXRpdmVDb3VudC51bnNhZmVHZXQoKSkpIHsKLSAgICAg
ICAgICAgIGlmICghdmFsaWRhdGVJbmRleEFycmF5UHJlY2lzZShjaGVja2VkQ291bnQudW5zYWZl
R2V0KCksIHR5cGUsIHN0YXRpY19jYXN0PEdDM0RpbnRwdHI+KG9mZnNldCksIG51bUVsZW1lbnRz
KSB8fCAhdmFsaWRhdGVWZXJ0ZXhBdHRyaWJ1dGVzKG51bUVsZW1lbnRzLCBjaGVja2VkUHJpbWl0
aXZlQ291bnQudW5zYWZlR2V0KCkpKSB7Ci0gICAgICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJy
b3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OLCBmdW5jdGlvbk5hbWUsICJh
dHRlbXB0IHRvIGFjY2VzcyBvdXQgb2YgYm91bmRzIGFycmF5cyIpOwotICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlmICgh
dmFsaWRhdGVTaW11bGF0ZWRWZXJ0ZXhBdHRyaWIwKG51bUVsZW1lbnRzKSkgewotICAgICAgICAg
ICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9O
LCBmdW5jdGlvbk5hbWUsICJhdHRlbXB0IHRvIGFjY2VzcyBvdXRzaWRlIHRoZSBib3VuZHMgb2Yg
dGhlIHNpbXVsYXRlZCB2ZXJ0ZXhBdHRyaWIwIGFycmF5Iik7Ci0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgIH0KKyAgICB9CiAKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAoIXZh
bGlkYXRlVmVydGV4QXR0cmlidXRlcygwKSkgewotICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJy
b3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OLCBmdW5jdGlvbk5hbWUsICJh
dHRyaWJzIG5vdCBzZXR1cCBjb3JyZWN0bHkiKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgfQorICAgIGlmICghdmFsaWRhdGVTaW11bGF0ZWRWZXJ0ZXhBdHRyaWIwKG51bUVs
ZW1lbnRzKSkgeworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6
SU5WQUxJRF9PUEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwgImF0dGVtcHQgdG8gYWNjZXNzIG91dHNp
ZGUgdGhlIGJvdW5kcyBvZiB0aGUgc2ltdWxhdGVkIHZlcnRleEF0dHJpYjAgYXJyYXkiKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKICAgICBjb25zdCBjaGFyKiByZWFzb24g
PSAiZnJhbWVidWZmZXIgaW5jb21wbGV0ZSI7Ci0gICAgaWYgKG1fZnJhbWVidWZmZXJCaW5kaW5n
ICYmICFtX2ZyYW1lYnVmZmVyQmluZGluZy0+b25BY2Nlc3MoZ3JhcGhpY3NDb250ZXh0M0QoKSwg
IWlzUmVzb3VyY2VTYWZlKCksICZyZWFzb24pKSB7CisgICAgaWYgKG1fZnJhbWVidWZmZXJCaW5k
aW5nICYmICFtX2ZyYW1lYnVmZmVyQmluZGluZy0+b25BY2Nlc3MoZ3JhcGhpY3NDb250ZXh0M0Qo
KSwgJnJlYXNvbikpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0
M0Q6OklOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OLCBmdW5jdGlvbk5hbWUsIHJlYXNvbik7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0zMDE0LDcgKzI5ODcsNyBAQCB2b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnJlYWRQaXhlbHMoR0MzRGludCB4LCBHQzNEaW50
IHksIEdDM0RzaXplaSB3aWR0aAogICAgIEdDM0RlbnVtIGludGVybmFsRm9ybWF0ID0gMDsKICAg
ICBpZiAobV9mcmFtZWJ1ZmZlckJpbmRpbmcpIHsKICAgICAgICAgY29uc3QgY2hhciogcmVhc29u
ID0gImZyYW1lYnVmZmVyIGluY29tcGxldGUiOwotICAgICAgICBpZiAoIW1fZnJhbWVidWZmZXJC
aW5kaW5nLT5vbkFjY2VzcyhncmFwaGljc0NvbnRleHQzRCgpLCAhaXNSZXNvdXJjZVNhZmUoKSwg
JnJlYXNvbikpIHsKKyAgICAgICAgaWYgKCFtX2ZyYW1lYnVmZmVyQmluZGluZy0+b25BY2Nlc3Mo
Z3JhcGhpY3NDb250ZXh0M0QoKSwgJnJlYXNvbikpIHsKICAgICAgICAgICAgIHN5bnRoZXNpemVH
TEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTiwg
InJlYWRQaXhlbHMiLCByZWFzb24pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBA
IC0zMjgzLDE4ICszMjU2LDggQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhJ
bWFnZTJEQmFzZShHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEcKICAgICBBU1NFUlQo
dGV4KTsKICAgICBBU1NFUlQodmFsaWRhdGVOUE9UVGV4dHVyZUxldmVsKHdpZHRoLCBoZWlnaHQs
IGxldmVsLCAidGV4SW1hZ2UyRCIpKTsKICAgICBpZiAoIXBpeGVscykgewotICAgICAgICAvLyBO
b3RlOiBDaHJvbWl1bSdzIE9wZW5HTCBpbXBsZW1lbnRhdGlvbiBjbGVhcnMgdGV4dHVyZXMgYW5k
IGlzUmVzb3VyY2VTYWZlKCkgaXMgdGhlcmVmb3JlIHRydWUuCi0gICAgICAgIC8vIEZvciBvdGhl
ciBpbXBsZW1lbnRhdGlvbnMsIGlmIHRoZXkgYXJlIHVzaW5nIEFOR0xFX2RlcHRoX3RleHR1cmUs
IEFOR0xFIGRlcHRoIHRleHR1cmVzCi0gICAgICAgIC8vIGNhbiBub3QgYmUgY2xlYXJlZCB3aXRo
IHRleEltYWdlMkQgYW5kIG11c3QgYmUgY2xlYXJlZCBieSBiaW5kaW5nIHRvIGFuIGZibyBhbmQg
Y2FsbGluZwotICAgICAgICAvLyBjbGVhci4KLSAgICAgICAgaWYgKGlzUmVzb3VyY2VTYWZlKCkp
Ci0gICAgICAgICAgICBtX2NvbnRleHQtPnRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJu
YWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBudWxscHRyKTsK
LSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBib29sIHN1Y2NlZWQgPSBtX2NvbnRleHQtPnRl
eEltYWdlMkRSZXNvdXJjZVNhZmUodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIHdpZHRo
LCBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIG1fdW5wYWNrQWxpZ25tZW50KTsK
LSAgICAgICAgICAgIGlmICghc3VjY2VlZCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KKyAgICAgICAgaWYgKCFtX2NvbnRleHQtPnRleEltYWdlMkRSZXNvdXJjZVNhZmUodGFy
Z2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0
LCB0eXBlLCBtX3VucGFja0FsaWdubWVudCkpCisgICAgICAgICAgICByZXR1cm47CiAgICAgfSBl
bHNlIHsKICAgICAgICAgQVNTRVJUKHZhbGlkYXRlU2V0dGFibGVUZXhJbnRlcm5hbEZvcm1hdCgi
dGV4SW1hZ2UyRCIsIGludGVybmFsRm9ybWF0KSk7CiAgICAgICAgIG1fY29udGV4dC0+bW92ZUVy
cm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCk7CkBAIC0zOTc4LDI2ICszOTQxLDI0IEBAIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29weVRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0
LCBHQzNEaW50IGxldmVsLCBHCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY29uc3QgY2hh
ciogcmVhc29uID0gImZyYW1lYnVmZmVyIGluY29tcGxldGUiOwotICAgIGlmIChtX2ZyYW1lYnVm
ZmVyQmluZGluZyAmJiAhbV9mcmFtZWJ1ZmZlckJpbmRpbmctPm9uQWNjZXNzKGdyYXBoaWNzQ29u
dGV4dDNEKCksICFpc1Jlc291cmNlU2FmZSgpLCAmcmVhc29uKSkgeworICAgIGlmIChtX2ZyYW1l
YnVmZmVyQmluZGluZyAmJiAhbV9mcmFtZWJ1ZmZlckJpbmRpbmctPm9uQWNjZXNzKGdyYXBoaWNz
Q29udGV4dDNEKCksICZyZWFzb24pKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBo
aWNzQ29udGV4dDNEOjpJTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTiwgImNvcHlUZXhJbWFn
ZTJEIiwgcmVhc29uKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjbGVhcklmQ29tcG9z
aXRlZCgpOwotICAgIGlmIChpc1Jlc291cmNlU2FmZSgpKQorCisgICAgR0MzRGludCBjbGlwcGVk
WCwgY2xpcHBlZFk7CisgICAgR0MzRHNpemVpIGNsaXBwZWRXaWR0aCwgY2xpcHBlZEhlaWdodDsK
KyAgICBpZiAoY2xpcDJEKHgsIHksIHdpZHRoLCBoZWlnaHQsIGdldEJvdW5kRnJhbWVidWZmZXJX
aWR0aCgpLCBnZXRCb3VuZEZyYW1lYnVmZmVySGVpZ2h0KCksICZjbGlwcGVkWCwgJmNsaXBwZWRZ
LCAmY2xpcHBlZFdpZHRoLCAmY2xpcHBlZEhlaWdodCkpIHsKKyAgICAgICAgbV9jb250ZXh0LT50
ZXhJbWFnZTJEUmVzb3VyY2VTYWZlKHRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCB3aWR0
aCwgaGVpZ2h0LCBib3JkZXIsCisgICAgICAgICAgICBpbnRlcm5hbEZvcm1hdCwgR3JhcGhpY3ND
b250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIG1fdW5wYWNrQWxpZ25tZW50KTsKKyAgICAgICAgaWYg
KGNsaXBwZWRXaWR0aCA+IDAgJiYgY2xpcHBlZEhlaWdodCA+IDApIHsKKyAgICAgICAgICAgIG1f
Y29udGV4dC0+Y29weVRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgY2xpcHBlZFggLSB4LCBj
bGlwcGVkWSAtIHksCisgICAgICAgICAgICAgICAgY2xpcHBlZFgsIGNsaXBwZWRZLCBjbGlwcGVk
V2lkdGgsIGNsaXBwZWRIZWlnaHQpOworICAgICAgICB9CisgICAgfSBlbHNlCiAgICAgICAgIG1f
Y29udGV4dC0+Y29weVRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIHgs
IHksIHdpZHRoLCBoZWlnaHQsIGJvcmRlcik7Ci0gICAgZWxzZSB7Ci0gICAgICAgIEdDM0RpbnQg
Y2xpcHBlZFgsIGNsaXBwZWRZOwotICAgICAgICBHQzNEc2l6ZWkgY2xpcHBlZFdpZHRoLCBjbGlw
cGVkSGVpZ2h0OwotICAgICAgICBpZiAoY2xpcDJEKHgsIHksIHdpZHRoLCBoZWlnaHQsIGdldEJv
dW5kRnJhbWVidWZmZXJXaWR0aCgpLCBnZXRCb3VuZEZyYW1lYnVmZmVySGVpZ2h0KCksICZjbGlw
cGVkWCwgJmNsaXBwZWRZLCAmY2xpcHBlZFdpZHRoLCAmY2xpcHBlZEhlaWdodCkpIHsKLSAgICAg
ICAgICAgIG1fY29udGV4dC0+dGV4SW1hZ2UyRFJlc291cmNlU2FmZSh0YXJnZXQsIGxldmVsLCBp
bnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLAotICAgICAgICAgICAgICAgIGlu
dGVybmFsRm9ybWF0LCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgbV91bnBhY2tB
bGlnbm1lbnQpOwotICAgICAgICAgICAgaWYgKGNsaXBwZWRXaWR0aCA+IDAgJiYgY2xpcHBlZEhl
aWdodCA+IDApIHsKLSAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmNvcHlUZXhTdWJJbWFnZTJE
KHRhcmdldCwgbGV2ZWwsIGNsaXBwZWRYIC0geCwgY2xpcHBlZFkgLSB5LAotICAgICAgICAgICAg
ICAgICAgICBjbGlwcGVkWCwgY2xpcHBlZFksIGNsaXBwZWRXaWR0aCwgY2xpcHBlZEhlaWdodCk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbV9jb250ZXh0LT5j
b3B5VGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgeCwgeSwgd2lkdGgs
IGhlaWdodCwgYm9yZGVyKTsKLSAgICB9CisKICAgICAvLyBGSVhNRTogaWYgdGhlIGZyYW1lYnVm
ZmVyIGlzIG5vdCBjb21wbGV0ZSwgbm9uZSBvZiB0aGUgYmVsb3cgc2hvdWxkIGJlIGV4ZWN1dGVk
LgogICAgIHRleC0+c2V0TGV2ZWxJbmZvKHRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCB3
aWR0aCwgaGVpZ2h0LCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmgKaW5kZXggNjZkYzBkMTk1NjM4NTI0YWVkZDFiNDA5ZjhkZTRhMWFiMzNhMjdiNy4uMmIz
MTZiZGIxZGZhODIxMWY5NTExNWRmNGUzMTRhOTg2M2U4MGE5YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaApAQCAt
MzcxLDEwICszNzEsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBpc0dMRVMyQ29tcGxpYW50KCkg
eyByZXR1cm4gbV9pc0dMRVMyQ29tcGxpYW50OyB9CiAgICAgLy8gUXVlcnkgaWYgdGhlIEdMIGlt
cGxlbWVudGF0aW9uIGlzIE5QT1Qgc3RyaWN0LgogICAgIGJvb2wgaXNHTEVTMk5QT1RTdHJpY3Qo
KSB7IHJldHVybiBtX2lzR0xFUzJOUE9UU3RyaWN0OyB9Ci0gICAgLy8gUXVlcnkgaWYgdGhlIEdM
IGltcGxlbWVudGF0aW9uIGdlbmVyYXRlcyBlcnJvcnMgb24gb3V0LW9mLWJvdW5kcyBidWZmZXIg
YWNjZXNzZXMuCi0gICAgYm9vbCBpc0Vycm9yR2VuZXJhdGVkT25PdXRPZkJvdW5kc0FjY2Vzc2Vz
KCkgeyByZXR1cm4gbV9pc0Vycm9yR2VuZXJhdGVkT25PdXRPZkJvdW5kc0FjY2Vzc2VzOyB9Ci0g
ICAgLy8gUXVlcnkgaWYgdGhlIEdMIGltcGxlbWVudGF0aW9uIGluaXRpYWxpemVzIHRleHR1cmVz
L3JlbmRlcmJ1ZmZlcnMgdG8gMC4KLSAgICBib29sIGlzUmVzb3VyY2VTYWZlKCkgeyByZXR1cm4g
bV9pc1Jlc291cmNlU2FmZTsgfQogICAgIC8vIFF1ZXJ5IGlmIGRlcHRoX3N0ZW5jaWwgYnVmZmVy
IGlzIHN1cHBvcnRlZC4KICAgICBib29sIGlzRGVwdGhTdGVuY2lsU3VwcG9ydGVkKCkgeyByZXR1
cm4gbV9pc0RlcHRoU3RlbmNpbFN1cHBvcnRlZDsgfQogCkBAIC01MzYsOCArNTMyLDYgQEAgcHJv
dGVjdGVkOgogCiAgICAgYm9vbCBtX2lzR0xFUzJDb21wbGlhbnQ7CiAgICAgYm9vbCBtX2lzR0xF
UzJOUE9UU3RyaWN0OwotICAgIGJvb2wgbV9pc0Vycm9yR2VuZXJhdGVkT25PdXRPZkJvdW5kc0Fj
Y2Vzc2VzOwotICAgIGJvb2wgbV9pc1Jlc291cmNlU2FmZTsKICAgICBib29sIG1faXNEZXB0aFN0
ZW5jaWxTdXBwb3J0ZWQ7CiAgICAgYm9vbCBtX2lzUm9idXN0bmVzc0VYVFN1cHBvcnRlZDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0M0QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0M0QuY3BwCmluZGV4IDZlZGY3YWVmOWJjYjRiNWVkNTk2ZjcyZjZjZWQwYmRlYTZmNzYwMDAu
LjZlOTI3NjFkNGZlM2Y3YWU3YjhmMzI5MzUyM2ViZmZhZmE0ZWQyMzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHAK
QEAgLTE0Nyw3ICsxNDcsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhJbWFnZTJEUmVz
b3VyY2VTYWZlKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgRwogewogICAgIEFTU0VS
VCh1bnBhY2tBbGlnbm1lbnQgPT0gMSB8fCB1bnBhY2tBbGlnbm1lbnQgPT0gMiB8fCB1bnBhY2tB
bGlnbm1lbnQgPT0gNCB8fCB1bnBhY2tBbGlnbm1lbnQgPT0gOCk7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPHVuc2lnbmVkIGNoYXJbXT4gemVybzsKLSAgICBpZiAoIWlzUmVzb3VyY2VTYWZlKCkgJiYg
d2lkdGggPiAwICYmIGhlaWdodCA+IDApIHsKKyAgICBpZiAod2lkdGggPiAwICYmIGhlaWdodCA+
IDApIHsKICAgICAgICAgdW5zaWduZWQgaW50IHNpemU7CiAgICAgICAgIEdDM0RlbnVtIGVycm9y
ID0gY29tcHV0ZUltYWdlU2l6ZUluQnl0ZXMoZm9ybWF0LCB0eXBlLCB3aWR0aCwgaGVpZ2h0LCB1
bnBhY2tBbGlnbm1lbnQsICZzaXplLCAwKTsKICAgICAgICAgaWYgKGVycm9yICE9IEdyYXBoaWNz
Q29udGV4dDNEOjpOT19FUlJPUikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKaW5kZXggZjhlYTg4YTVkZmFkMDRjMzhjMzdh
Yjk4ZTBlNmRhZjUyMDAzZDFmOC4uNmRmODkxZDQxMWJjMzEwYjM0ZjFlYWZlNzk2Zjc1MjczYWYw
MmQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0M0QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQzRC5oCkBAIC0xMzA2LDcgKzEzMDYsNiBAQCBwcml2YXRlOgogI2VuZGlmCiAK
ICAgICBpbnQgbV9jdXJyZW50V2lkdGgsIG1fY3VycmVudEhlaWdodDsKLSAgICBib29sIGlzUmVz
b3VyY2VTYWZlKCk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZXRhaW5QdHI8V2ViR0xM
YXllcj4gbV93ZWJHTExheWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5H
TENvbW1vbi5jcHAKaW5kZXggMTg2MzcyMTk2Y2VjZjMyYjM5Y2ZiZmI3MDRkN2U5YjA1NGIzOTRk
Zi4uMGIyYWQwNTg1MDRjM2U1ZTIwZjdkMWZiNzcyZmZmZGRhNmYzMWIwZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNE
T3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCkBAIC0xNTYsMTEgKzE1Niw2
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZhbGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNo
YXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuCiAgICAgfQogfQogCi1ib29sIEdyYXBoaWNzQ29u
dGV4dDNEOjppc1Jlc291cmNlU2FmZSgpCi17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1
ZmZlciogaW1hZ2VCdWZmZXIpCiB7CiAgICAgaW50IHJvd0J5dGVzID0gbV9jdXJyZW50V2lkdGgg
KiA0Owo=
</data>
<flag name="commit-queue"
          id="317513"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294862</attachid>
            <date>2016-11-15 12:07:52 -0800</date>
            <delta_ts>2016-11-15 12:55:49 -0800</delta_ts>
            <desc>Patch for committing</desc>
            <filename>bug-164782-20161115120750.patch</filename>
            <type>text/plain</type>
            <size>32436</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4NzQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWFiYzQyNjY4YzQ0MjA2
NGJkN2FhMTMwYjRjMmNjZjAzODVmMzE5My4uODUyMDU1MjU2NTg1Y2Q5YjdmOTU4ZDljN2U2NTI2
M2Y3ZGQyMTQ4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE2LTExLTE1ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdMXSBS
ZW1vdmUgdW51c2VkIENocm9taXVtLXNwZWNpZmljIE9wZW5HTCBleHRlbnNpb25zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ3ODIKKworICAgICAg
ICBSZXZpZXdlZCBieSBEZWFuIEphY2tzb24uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1
c2UgdGhlcmUgaXMgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogaHRtbC9jYW52YXMv
V2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0Ojpjb3B5QnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TDJSZW5kZXJpbmdDb250ZXh0OjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24pOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
Q29tcHJlc3NlZFRleHR1cmVTM1RDLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJl
c3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
RGVwdGhUZXh0dXJlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRGVwdGhUZXh0dXJlOjpz
dXBwb3J0ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xEcmF3QnVmZmVyczo6c2F0aXNmaWVzV2ViR0xSZXF1aXJl
bWVudHMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xGcmFtZWJ1ZmZlcjo6b25BY2Nlc3MpOgorICAgICAgICAqIGh0
bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpnZXRFeHRlbnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpjbGVhcik6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpzZXR1cEZsYWdzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmJ1ZmZlckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6YnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpjb3B5VGV4U3ViSW1hZ2UyRCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZURyYXdBcnJheXMpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVEcmF3RWxlbWVudHMpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cmVhZFBpeGVscyk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhJbWFnZTJEQmFz
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjb3B5VGV4
SW1hZ2UyRCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6aXNHTEVT
Mk5QT1RTdHJpY3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6aXNFcnJvckdlbmVyYXRlZE9uT3V0T2ZCb3VuZHNBY2Nlc3Nlcyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjppc1Jlc291cmNlU2FmZSk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnRleEltYWdlMkRSZXNv
dXJjZVNhZmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNE
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNE
T3BlbkdMQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpp
c1Jlc291cmNlU2FmZSk6IERlbGV0ZWQuCisKIDIwMTYtMTEtMTQgIE15bGVzIEMuIE1heGZpZWxk
ICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViR0xdIE1pZ3JhdGUgY29uc3Ry
dWN0aW9uIGZ1bmN0aW9ucyBmcm9tIHBvaW50ZXJzIHRvIHJlZmVyZW5jZXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5k
ZXggNDZjNDZkZDUyYzhmN2FiZWJkNTNjOTVjY2M1MTM4ZjVjNjUyNzQ5NC4uY2U0ZjBlZjJmMzVl
NTI2MGQyNWY3MjlkYzI5ZDI0N2EyMDllYzM0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTE5OCwxMSArMTk4
LDkgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpjb3B5QnVmZmVyU3ViRGF0YShHQzNE
ZW51bSByZWFkVGFyZ2V0LCBHQzNEZW51bSB3cmkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIGlmICghdGhpcy0+aXNFcnJvckdlbmVyYXRlZE9uT3V0T2ZCb3VuZHNBY2Nlc3NlcygpKSB7
Ci0gICAgICAgIGlmICghd3JpdGVCdWZmZXItPmFzc29jaWF0ZUNvcHlCdWZmZXJTdWJEYXRhKCpy
ZWFkQnVmZmVyLCBjaGVja2VkUmVhZE9mZnNldC51bnNhZmVHZXQoKSwgY2hlY2tlZFdyaXRlT2Zm
c2V0LnVuc2FmZUdldCgpLCBjaGVja2VkU2l6ZS51bnNhZmVHZXQoKSkpIHsKLSAgICAgICAgICAg
IHRoaXMtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVF
LCAiY29weUJ1ZmZlclN1YkRhdGEiLCAib2Zmc2V0IG91dCBvZiByYW5nZSIpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9CisgICAgaWYgKCF3cml0ZUJ1ZmZlci0+YXNzb2NpYXRlQ29w
eUJ1ZmZlclN1YkRhdGEoKnJlYWRCdWZmZXIsIGNoZWNrZWRSZWFkT2Zmc2V0LnVuc2FmZUdldCgp
LCBjaGVja2VkV3JpdGVPZmZzZXQudW5zYWZlR2V0KCksIGNoZWNrZWRTaXplLnVuc2FmZUdldCgp
KSkgeworICAgICAgICB0aGlzLT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6
SU5WQUxJRF9WQUxVRSwgImNvcHlCdWZmZXJTdWJEYXRhIiwgIm9mZnNldCBvdXQgb2YgcmFuZ2Ui
KTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIG1fY29udGV4dC0+bW92ZUVycm9yc1Rv
U3ludGhldGljRXJyb3JMaXN0KCk7CkBAIC00NDAsNyArNDM4LDcgQEAgdm9pZCBXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0OjpjbGVhcihHQzNEYml0ZmllbGQgbWFzaykKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICBjb25zdCBjaGFyKiByZWFzb24gPSAiZnJhbWVidWZmZXIgaW5jb21wbGV0ZSI7
Ci0gICAgaWYgKG1fZnJhbWVidWZmZXJCaW5kaW5nICYmICFtX2ZyYW1lYnVmZmVyQmluZGluZy0+
b25BY2Nlc3MoZ3JhcGhpY3NDb250ZXh0M0QoKSwgIWlzUmVzb3VyY2VTYWZlKCksICZyZWFzb24p
KSB7CisgICAgaWYgKG1fZnJhbWVidWZmZXJCaW5kaW5nICYmICFtX2ZyYW1lYnVmZmVyQmluZGlu
Zy0+b25BY2Nlc3MoZ3JhcGhpY3NDb250ZXh0M0QoKSwgJnJlYXNvbikpIHsKICAgICAgICAgc3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRlJBTUVCVUZGRVJfT1BF
UkFUSU9OLCAiY2xlYXIiLCByZWFzb24pOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtOTE0
LDEwICs5MTIsOCBAQCBXZWJHTEV4dGVuc2lvbiogV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0
RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICB9CiAgICAgaWYgKGVxdWFsSWdub3Jp
bmdBU0NJSUNhc2UobmFtZSwgIldFQkdMX2RlcHRoX3RleHR1cmUiKQogICAgICAgICAmJiBXZWJH
TERlcHRoVGV4dHVyZTo6c3VwcG9ydGVkKCpncmFwaGljc0NvbnRleHQzRCgpKSkgewotICAgICAg
ICBpZiAoIW1fd2ViZ2xEZXB0aFRleHR1cmUpIHsKLSAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0NIUk9NSVVNX2RlcHRoX3RleHR1cmUiKTsK
KyAgICAgICAgaWYgKCFtX3dlYmdsRGVwdGhUZXh0dXJlKQogICAgICAgICAgICAgbV93ZWJnbERl
cHRoVGV4dHVyZSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xEZXB0aFRleHR1cmU+KCp0aGlzKTsK
LSAgICAgICAgfQogICAgICAgICByZXR1cm4gbV93ZWJnbERlcHRoVGV4dHVyZS5nZXQoKTsKICAg
ICB9CiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIldFQkdMX2RlYnVnX3Jl
bmRlcmVyX2luZm8iKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwCmluZGV4IDZlOTRmYjUzODY3ZDk4ZWY4
NTA0MTY4ODk2OGJiMWFjNzBiYzU0YjEuLjQwYjdmNTNhODg0NjQwNTg2ZDU3NzQyNGZhZTdiZWMx
NmE3YjZiOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29t
cHJlc3NlZFRleHR1cmVTM1RDLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHAKQEAgLTU2LDkgKzU2LDcgQEAgYm9vbCBXZWJH
TENvbXByZXNzZWRUZXh0dXJlUzNUQzo6c3VwcG9ydGVkKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UmIGNvbnRleHQpCiB7CiAgICAgYXV0byYgZXh0ZW5zaW9ucyA9IGNvbnRleHQuZ3JhcGhpY3ND
b250ZXh0M0QoKS0+Z2V0RXh0ZW5zaW9ucygpOwogICAgIHJldHVybiBleHRlbnNpb25zLnN1cHBv
cnRzKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjIikKLSAgICAgICAgfHwgKGV4dGVu
c2lvbnMuc3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEiKQotICAgICAg
ICAgICAgJiYgZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfQ0hST01JVU1fdGV4dHVyZV9jb21wcmVz
c2lvbl9keHQzIikKLSAgICAgICAgICAgICYmIGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX0NIUk9N
SVVNX3RleHR1cmVfY29tcHJlc3Npb25fZHh0NSIpKTsKKyAgICAgICAgfHwgZXh0ZW5zaW9ucy5z
dXBwb3J0cygiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MSIpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTERlcHRoVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERl
cHRoVGV4dHVyZS5jcHAKaW5kZXggZGYyM2RmZWYyZWM1OTU2ZDk0NzhhOGI2OTY2MDMyZTNlMjZl
MGFiYy4uMjlmOWI2NGU0ZjI1NjQ2ZWQ5NWYxNTMxNzkzMDJlNTcxZjhkODliOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZXB0aFRleHR1cmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmNwcApAQCAtNTAs
OCArNTAsNyBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBXZWJHTERlcHRoVGV4dHVy
ZTo6Z2V0TmFtZSgpIGNvbnN0CiBib29sIFdlYkdMRGVwdGhUZXh0dXJlOjpzdXBwb3J0ZWQoR3Jh
cGhpY3NDb250ZXh0M0QmIGNvbnRleHQpCiB7CiAgICAgRXh0ZW5zaW9uczNEJiBleHRlbnNpb25z
ID0gY29udGV4dC5nZXRFeHRlbnNpb25zKCk7Ci0gICAgcmV0dXJuIGV4dGVuc2lvbnMuc3VwcG9y
dHMoIkdMX0NIUk9NSVVNX2RlcHRoX3RleHR1cmUiKQotICAgICAgICB8fCBleHRlbnNpb25zLnN1
cHBvcnRzKCJHTF9PRVNfZGVwdGhfdGV4dHVyZSIpCisgICAgcmV0dXJuIGV4dGVuc2lvbnMuc3Vw
cG9ydHMoIkdMX09FU19kZXB0aF90ZXh0dXJlIikKICAgICAgICAgfHwgZXh0ZW5zaW9ucy5zdXBw
b3J0cygiR0xfQVJCX2RlcHRoX3RleHR1cmUiKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmNwcAppbmRleCBmYzMwMmJhZDhiNDM4ODM1MTdl
YWFjZDg1N2RiMzUxZmEyMGRiYWFkLi4wODkxYzAyYTliODg5ZDBlN2JhOGU5MDU1ZjJiZjFhNmMx
ZTEwOWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdC
dWZmZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZm
ZXJzLmNwcApAQCAtMTAzLDkgKzEwMyw4IEBAIGJvb2wgV2ViR0xEcmF3QnVmZmVyczo6c2F0aXNm
aWVzV2ViR0xSZXF1aXJlbWVudHMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgd2ViCiAgICAg
Y29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwg
ZmJvKTsKIAogICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgYnVmZmVyWzRdID0geyAwLCAwLCAwLCAw
IH07IC8vIHRleHR1cmVzIGFyZSByZXF1aXJlZCB0byBiZSBpbml0aWFsaXplZCBmb3Igb3RoZXIg
cG9ydHMuCi0gICAgYm9vbCBzdXBwb3J0c0RlcHRoID0gKGNvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5zdXBwb3J0cygiR0xfQ0hST01JVU1fZGVwdGhfdGV4dHVyZSIpCi0gICAgICAgIHx8IGNvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfT0VTX2RlcHRoX3RleHR1cmUiKQotICAg
ICAgICB8fCBjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0FSQl9kZXB0aF90
ZXh0dXJlIikpOworICAgIGJvb2wgc3VwcG9ydHNEZXB0aCA9IGNvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS5zdXBwb3J0cygiR0xfT0VTX2RlcHRoX3RleHR1cmUiKQorICAgICAgICB8fCBjb250ZXh0
LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0FSQl9kZXB0aF90ZXh0dXJlIik7CiAgICAg
Ym9vbCBzdXBwb3J0c0RlcHRoU3RlbmNpbCA9IChjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3Vw
cG9ydHMoIkdMX0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCIpCiAgICAgICAgIHx8IGNvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIikp
OwogICAgIFBsYXRmb3JtM0RPYmplY3QgZGVwdGhTdGVuY2lsID0gMDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAKaW5kZXggMmJhNDFiOTZjOTQ3
ODM1NDM2OTI4YzYyZTUwN2Y0YThlNTMwZjhkYi4uZjliN2MyMDIyODgzZDU3OTJiMDI1ZjAyMTFk
MDJlNGRhNmI2NjYzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xGcmFtZWJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xG
cmFtZWJ1ZmZlci5jcHAKQEAgLTQ3OSwxMyArNDc5LDExIEBAIEdDM0RlbnVtIFdlYkdMRnJhbWVi
dWZmZXI6OmNoZWNrU3RhdHVzKGNvbnN0IGNoYXIqKiByZWFzb24pIGNvbnN0CiAgICAgcmV0dXJu
IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9DT01QTEVURTsKIH0KIAotYm9vbCBXZWJH
TEZyYW1lYnVmZmVyOjpvbkFjY2VzcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNkLCBib29s
IG5lZWRUb0luaXRpYWxpemVBdHRhY2htZW50cywgY29uc3QgY2hhcioqIHJlYXNvbikKK2Jvb2wg
V2ViR0xGcmFtZWJ1ZmZlcjo6b25BY2Nlc3MoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzZCwg
Y29uc3QgY2hhcioqIHJlYXNvbikKIHsKICAgICBpZiAoY2hlY2tTdGF0dXMocmVhc29uKSAhPSBH
cmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVJfQ09NUExFVEUpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBpZiAobmVlZFRvSW5pdGlhbGl6ZUF0dGFjaG1lbnRzKQotICAgICAgICByZXR1
cm4gaW5pdGlhbGl6ZUF0dGFjaG1lbnRzKGNvbnRleHQzZCwgcmVhc29uKTsKLSAgICByZXR1cm4g
dHJ1ZTsKKyAgICByZXR1cm4gaW5pdGlhbGl6ZUF0dGFjaG1lbnRzKGNvbnRleHQzZCwgcmVhc29u
KTsKIH0KIAogYm9vbCBXZWJHTEZyYW1lYnVmZmVyOjpoYXNTdGVuY2lsQnVmZmVyKCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaAppbmRleCAy
MGVkMjljYzAxNmQ4MWQ2YzQ3NjM3MWRlYjFlYWRjNTA3ZTgzZTg4Li5iYWVlYWU2NmIyOWExNGQy
MGEyNDc4ZGRhMDk5MGI4ZjVlNTk1ZjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xGcmFtZWJ1ZmZlci5oCkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKICAgICAvLyBS
ZXR1cm4gZmFsc2UgaWYgdGhlIGZyYW1lYnVmZmVyIGlzIGluY29tcGxldGU7IG90aGVyd2lzZSBp
bml0aWFsaXplCiAgICAgLy8gdGhlIGJ1ZmZlcnMgaWYgdGhleSBoYXZlbid0IGJlZW4gaW5pdGlh
bGl6ZWQgYW5kCiAgICAgLy8gbmVlZFRvSW5pdGlhbGl6ZUF0dGFjaG1lbnRzIGlzIHRydWUuCi0g
ICAgYm9vbCBvbkFjY2VzcyhHcmFwaGljc0NvbnRleHQzRCosIGJvb2wgbmVlZFRvSW5pdGlhbGl6
ZUF0dGFjaG1lbnRzLCBjb25zdCBjaGFyKiogcmVhc29uKTsKKyAgICBib29sIG9uQWNjZXNzKEdy
YXBoaWNzQ29udGV4dDNEKiwgY29uc3QgY2hhcioqIHJlYXNvbik7CiAKICAgICAvLyBTb2Z0d2Fy
ZSB2ZXJzaW9uIG9mIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cygpLCBleGNlcHQgdGhhdCB3aGVu
CiAgICAgLy8gRlJBTUVCVUZGRVJfQ09NUExFVEUgaXMgcmV0dXJuZWQsIGl0IGlzIHN0aWxsIHBv
c3NpYmxlIGZvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggZGMxOWE1NTI0MmFjMzE5NjliOTAzNzdlMTUxMDJmODg4
ZDViZDQwNS4uZTY4ODQxNmE5MzkwZGNkZTYzOTAyZDg1MzkzZjE0M2EyNzliYTg3MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQu
Y3BwCkBAIC0yMTAsMTAgKzIxMCw4IEBAIFdlYkdMRXh0ZW5zaW9uKiBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgfQogICAgIGlmIChl
cXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJXRUJHTF9kZXB0aF90ZXh0dXJlIikKICAgICAg
ICAgJiYgV2ViR0xEZXB0aFRleHR1cmU6OnN1cHBvcnRlZCgqZ3JhcGhpY3NDb250ZXh0M0QoKSkp
IHsKLSAgICAgICAgaWYgKCFtX3dlYmdsRGVwdGhUZXh0dXJlKSB7Ci0gICAgICAgICAgICBtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9DSFJPTUlVTV9kZXB0aF90
ZXh0dXJlIik7CisgICAgICAgIGlmICghbV93ZWJnbERlcHRoVGV4dHVyZSkKICAgICAgICAgICAg
IG1fd2ViZ2xEZXB0aFRleHR1cmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMRGVwdGhUZXh0dXJl
PigqdGhpcyk7Ci0gICAgICAgIH0KICAgICAgICAgcmV0dXJuIG1fd2ViZ2xEZXB0aFRleHR1cmUu
Z2V0KCk7CiAgICAgfQogICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJXRUJH
TF9kcmF3X2J1ZmZlcnMiKSAmJiBzdXBwb3J0c0RyYXdCdWZmZXJzKCkpIHsKQEAgLTQ1Niw3ICs0
NTQsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y2xlYXIoR0MzRGJpdGZpZWxkIG1h
c2spCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY29uc3QgY2hhciogcmVhc29uID0gImZy
YW1lYnVmZmVyIGluY29tcGxldGUiOwotICAgIGlmIChtX2ZyYW1lYnVmZmVyQmluZGluZyAmJiAh
bV9mcmFtZWJ1ZmZlckJpbmRpbmctPm9uQWNjZXNzKGdyYXBoaWNzQ29udGV4dDNEKCksICFpc1Jl
c291cmNlU2FmZSgpLCAmcmVhc29uKSkgeworICAgIGlmIChtX2ZyYW1lYnVmZmVyQmluZGluZyAm
JiAhbV9mcmFtZWJ1ZmZlckJpbmRpbmctPm9uQWNjZXNzKGdyYXBoaWNzQ29udGV4dDNEKCksICZy
ZWFzb24pKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJ
TlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTiwgImNsZWFyIiwgcmVhc29uKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggNGQ0M2U3NGY2MTE5OTNjMjQ5NWQz
ZmFkMGVhNWQyODk1OWQ4YmRlOC4uNDZmZjVlNTg3ZTYwYjdmZDBjYWQyYzY0NjZjYjY3ZTVjYmJi
ODMzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTU3NSw4ICs1NzUsNiBAQCB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OnNldHVwRmxhZ3MoKQogICAgICAgICBtX3N5bnRoZXNpemVkRXJy
b3JzVG9Db25zb2xlID0gcGFnZS0+c2V0dGluZ3MoKS53ZWJHTEVycm9yc1RvQ29uc29sZUVuYWJs
ZWQoKTsKIAogICAgIG1faXNHTEVTMkNvbXBsaWFudCA9IG1fY29udGV4dC0+aXNHTEVTMkNvbXBs
aWFudCgpOwotICAgIG1faXNFcnJvckdlbmVyYXRlZE9uT3V0T2ZCb3VuZHNBY2Nlc3NlcyA9IG1f
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmlzRW5hYmxlZCgiR0xfQ0hST01JVU1fc3RyaWN0X2F0
dHJpYnMiKTsKLSAgICBtX2lzUmVzb3VyY2VTYWZlID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25z
KCkuaXNFbmFibGVkKCJHTF9DSFJPTUlVTV9yZXNvdXJjZV9zYWZlIik7CiAgICAgaWYgKG1faXNH
TEVTMkNvbXBsaWFudCkgewogICAgICAgICBtX2lzR0xFUzJOUE9UU3RyaWN0ID0gIW1fY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLmlzRW5hYmxlZCgiR0xfT0VTX3RleHR1cmVfbnBvdCIpOwogICAg
ICAgICBtX2lzRGVwdGhTdGVuY2lsU3VwcG9ydGVkID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25z
KCkuaXNFbmFibGVkKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKTsKQEAgLTEwOTEsMTEg
KzEwODksOSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJ1ZmZlckRhdGEoR0Mz
RGVudW0gdGFyZ2V0LCBsb25nIGxvbmcgc2l6ZSwgR0MzRAogICAgICAgICBzeW50aGVzaXplR0xF
cnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSwgImJ1ZmZlckRhdGEiLCAic2l6
ZSA9PSAwIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKCFpc0Vycm9yR2VuZXJh
dGVkT25PdXRPZkJvdW5kc0FjY2Vzc2VzKCkpIHsKLSAgICAgICAgaWYgKCFidWZmZXItPmFzc29j
aWF0ZUJ1ZmZlckRhdGEoc3RhdGljX2Nhc3Q8R0MzRHNpemVpcHRyPihzaXplKSkpIHsKLSAgICAg
ICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVF
LCAiYnVmZmVyRGF0YSIsICJpbnZhbGlkIGJ1ZmZlciIpOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9CisgICAgaWYgKCFidWZmZXItPmFzc29jaWF0ZUJ1ZmZlckRhdGEoc3RhdGljX2Nh
c3Q8R0MzRHNpemVpcHRyPihzaXplKSkpIHsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUsICJidWZmZXJEYXRhIiwgImludmFsaWQgYnVm
ZmVyIik7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBtX2NvbnRleHQtPm1vdmVFcnJv
cnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpOwpAQCAtMTExOSwxMSArMTExNSw5IEBAIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YnVmZmVyRGF0YShHQzNEZW51bSB0YXJnZXQsIE9wdGlv
bmFsPEJ1ZmZlckRhdGFTCiAgICAgICAgIHJldHVybjsKIAogICAgIFdURjo6dmlzaXQoWyZdKGF1
dG8mIGRhdGEpIHsKLSAgICAgICAgaWYgKCF0aGlzLT5pc0Vycm9yR2VuZXJhdGVkT25PdXRPZkJv
dW5kc0FjY2Vzc2VzKCkpIHsKLSAgICAgICAgICAgIGlmICghYnVmZmVyLT5hc3NvY2lhdGVCdWZm
ZXJEYXRhKGRhdGEuZ2V0KCkpKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy0+c3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUsICJidWZmZXJEYXRhIiwgImlu
dmFsaWQgYnVmZmVyIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQor
ICAgICAgICBpZiAoIWJ1ZmZlci0+YXNzb2NpYXRlQnVmZmVyRGF0YShkYXRhLmdldCgpKSkgewor
ICAgICAgICAgICAgdGhpcy0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklO
VkFMSURfVkFMVUUsICJidWZmZXJEYXRhIiwgImludmFsaWQgYnVmZmVyIik7CisgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBtX2NvbnRleHQtPm1vdmVFcnJvcnNUb1N5
bnRoZXRpY0Vycm9yTGlzdCgpOwpAQCAtMTE1MCwxMSArMTE0NCw5IEBAIHZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6YnVmZmVyU3ViRGF0YShHQzNEZW51bSB0YXJnZXQsIGxvbmcgbG9u
ZyBvZmZzZXQsCiAgICAgICAgIHJldHVybjsKIAogICAgIFdURjo6dmlzaXQoWyZdKGF1dG8mIGRh
dGEpIHsKLSAgICAgICAgaWYgKCF0aGlzLT5pc0Vycm9yR2VuZXJhdGVkT25PdXRPZkJvdW5kc0Fj
Y2Vzc2VzKCkpIHsKLSAgICAgICAgICAgIGlmICghYnVmZmVyLT5hc3NvY2lhdGVCdWZmZXJTdWJE
YXRhKHN0YXRpY19jYXN0PEdDM0RpbnRwdHI+KG9mZnNldCksIGRhdGEuZ2V0KCkpKSB7Ci0gICAg
ICAgICAgICAgICAgdGhpcy0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklO
VkFMSURfVkFMVUUsICJidWZmZXJTdWJEYXRhIiwgIm9mZnNldCBvdXQgb2YgcmFuZ2UiKTsKLSAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9CisgICAgICAgIGlmICghYnVmZmVy
LT5hc3NvY2lhdGVCdWZmZXJTdWJEYXRhKHN0YXRpY19jYXN0PEdDM0RpbnRwdHI+KG9mZnNldCks
IGRhdGEuZ2V0KCkpKSB7CisgICAgICAgICAgICB0aGlzLT5zeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSwgImJ1ZmZlclN1YkRhdGEiLCAib2Zmc2V0IG91
dCBvZiByYW5nZSIpOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAg
bV9jb250ZXh0LT5tb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKTsKQEAgLTEzNTUsNDUg
KzEzNDcsNDEgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjb3B5VGV4U3ViSW1h
Z2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICBjb25zdCBjaGFyKiByZWFzb24gPSAiZnJhbWVidWZmZXIgaW5jb21wbGV0ZSI7Ci0g
ICAgaWYgKG1fZnJhbWVidWZmZXJCaW5kaW5nICYmICFtX2ZyYW1lYnVmZmVyQmluZGluZy0+b25B
Y2Nlc3MoZ3JhcGhpY3NDb250ZXh0M0QoKSwgIWlzUmVzb3VyY2VTYWZlKCksICZyZWFzb24pKSB7
CisgICAgaWYgKG1fZnJhbWVidWZmZXJCaW5kaW5nICYmICFtX2ZyYW1lYnVmZmVyQmluZGluZy0+
b25BY2Nlc3MoZ3JhcGhpY3NDb250ZXh0M0QoKSwgJnJlYXNvbikpIHsKICAgICAgICAgc3ludGhl
c2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFU
SU9OLCAiY29weVRleFN1YkltYWdlMkQiLCByZWFzb24pOwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIGNsZWFySWZDb21wb3NpdGVkKCk7Ci0gICAgaWYgKGlzUmVzb3VyY2VTYWZlKCkpCi0g
ICAgICAgIG1fY29udGV4dC0+Y29weVRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNl
dCwgeW9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIEdD
M0RpbnQgY2xpcHBlZFgsIGNsaXBwZWRZOwotICAgICAgICBHQzNEc2l6ZWkgY2xpcHBlZFdpZHRo
LCBjbGlwcGVkSGVpZ2h0OwotICAgICAgICBpZiAoY2xpcDJEKHgsIHksIHdpZHRoLCBoZWlnaHQs
IGdldEJvdW5kRnJhbWVidWZmZXJXaWR0aCgpLCBnZXRCb3VuZEZyYW1lYnVmZmVySGVpZ2h0KCks
ICZjbGlwcGVkWCwgJmNsaXBwZWRZLCAmY2xpcHBlZFdpZHRoLCAmY2xpcHBlZEhlaWdodCkpIHsK
LSAgICAgICAgICAgIEdDM0RlbnVtIGZvcm1hdDsKLSAgICAgICAgICAgIEdDM0RlbnVtIHR5cGU7
Ci0gICAgICAgICAgICBpZiAoIUdyYXBoaWNzQ29udGV4dDNEOjpwb3NzaWJsZUZvcm1hdEFuZFR5
cGVGb3JJbnRlcm5hbEZvcm1hdCh0ZXgtPmdldEludGVybmFsRm9ybWF0KHRhcmdldCwgbGV2ZWwp
LCBmb3JtYXQsIHR5cGUpKSB7Ci0gICAgICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSwgImNvcHlUZXhTdWJJbWFnZTJEIiwgIlRleHR1
cmUgaGFzIHVua25vd24gaW50ZXJuYWwgZm9ybWF0Iik7CisKKyAgICBHQzNEaW50IGNsaXBwZWRY
LCBjbGlwcGVkWTsKKyAgICBHQzNEc2l6ZWkgY2xpcHBlZFdpZHRoLCBjbGlwcGVkSGVpZ2h0Owor
ICAgIGlmIChjbGlwMkQoeCwgeSwgd2lkdGgsIGhlaWdodCwgZ2V0Qm91bmRGcmFtZWJ1ZmZlcldp
ZHRoKCksIGdldEJvdW5kRnJhbWVidWZmZXJIZWlnaHQoKSwgJmNsaXBwZWRYLCAmY2xpcHBlZFks
ICZjbGlwcGVkV2lkdGgsICZjbGlwcGVkSGVpZ2h0KSkgeworICAgICAgICBHQzNEZW51bSBmb3Jt
YXQ7CisgICAgICAgIEdDM0RlbnVtIHR5cGU7CisgICAgICAgIGlmICghR3JhcGhpY3NDb250ZXh0
M0Q6OnBvc3NpYmxlRm9ybWF0QW5kVHlwZUZvckludGVybmFsRm9ybWF0KHRleC0+Z2V0SW50ZXJu
YWxGb3JtYXQodGFyZ2V0LCBsZXZlbCksIGZvcm1hdCwgdHlwZSkpIHsKKyAgICAgICAgICAgIHN5
bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0sICJjb3B5VGV4
U3ViSW1hZ2UyRCIsICJUZXh0dXJlIGhhcyB1bmtub3duIGludGVybmFsIGZvcm1hdCIpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjx1bnNp
Z25lZCBjaGFyW10+IHplcm87CisgICAgICAgIGlmICh3aWR0aCAmJiBoZWlnaHQpIHsKKyAgICAg
ICAgICAgIHVuc2lnbmVkIHNpemU7CisgICAgICAgICAgICBHQzNEZW51bSBlcnJvciA9IG1fY29u
dGV4dC0+Y29tcHV0ZUltYWdlU2l6ZUluQnl0ZXMoZm9ybWF0LCB0eXBlLCB3aWR0aCwgaGVpZ2h0
LCBtX3VucGFja0FsaWdubWVudCwgJnNpemUsIDApOworICAgICAgICAgICAgaWYgKGVycm9yICE9
IEdyYXBoaWNzQ29udGV4dDNEOjpOT19FUlJPUikgeworICAgICAgICAgICAgICAgIHN5bnRoZXNp
emVHTEVycm9yKGVycm9yLCAiY29weVRleFN1YkltYWdlMkQiLCAiYmFkIGRpbWVuc2lvbnMiKTsK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8dW5zaWduZWQgY2hhcltdPiB6ZXJvOwotICAgICAgICAgICAgaWYgKHdpZHRo
ICYmIGhlaWdodCkgewotICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzaXplOwotICAgICAg
ICAgICAgICAgIEdDM0RlbnVtIGVycm9yID0gbV9jb250ZXh0LT5jb21wdXRlSW1hZ2VTaXplSW5C
eXRlcyhmb3JtYXQsIHR5cGUsIHdpZHRoLCBoZWlnaHQsIG1fdW5wYWNrQWxpZ25tZW50LCAmc2l6
ZSwgMCk7Ci0gICAgICAgICAgICAgICAgaWYgKGVycm9yICE9IEdyYXBoaWNzQ29udGV4dDNEOjpO
T19FUlJPUikgewotICAgICAgICAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihlcnJvciwg
ImNvcHlUZXhTdWJJbWFnZTJEIiwgImJhZCBkaW1lbnNpb25zIik7Ci0gICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgemVybyA9IHN0
ZDo6bWFrZV91bmlxdWU8dW5zaWduZWQgY2hhcltdPihzaXplKTsKLSAgICAgICAgICAgICAgICBp
ZiAoIXplcm8pIHsKLSAgICAgICAgICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUsICJjb3B5VGV4U3ViSW1hZ2UyRCIsICJvdXQgb2Yg
bWVtb3J5Iik7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgbWVtc2V0KHplcm8uZ2V0KCksIDAsIHNpemUpOworICAgICAgICAg
ICAgemVybyA9IHN0ZDo6bWFrZV91bmlxdWU8dW5zaWduZWQgY2hhcltdPihzaXplKTsKKyAgICAg
ICAgICAgIGlmICghemVybykgeworICAgICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdy
YXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFLCAiY29weVRleFN1YkltYWdlMkQiLCAib3V0
IG9mIG1lbW9yeSIpOworICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIG1fY29udGV4dC0+dGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0
LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHplcm8uZ2V0KCkpOwotICAg
ICAgICAgICAgaWYgKGNsaXBwZWRXaWR0aCA+IDAgJiYgY2xpcHBlZEhlaWdodCA+IDApCi0gICAg
ICAgICAgICAgICAgbV9jb250ZXh0LT5jb3B5VGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4
b2Zmc2V0ICsgY2xpcHBlZFggLSB4LCB5b2Zmc2V0ICsgY2xpcHBlZFkgLSB5LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpcHBlZFgsIGNsaXBwZWRZLCBj
bGlwcGVkV2lkdGgsIGNsaXBwZWRIZWlnaHQpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAg
IG1fY29udGV4dC0+Y29weVRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9m
ZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCk7Ci0gICAgfQorICAgICAgICAgICAgbWVtc2V0KHpl
cm8uZ2V0KCksIDAsIHNpemUpOworICAgICAgICB9CisgICAgICAgIG1fY29udGV4dC0+dGV4U3Vi
SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBm
b3JtYXQsIHR5cGUsIHplcm8uZ2V0KCkpOworICAgICAgICBpZiAoY2xpcHBlZFdpZHRoID4gMCAm
JiBjbGlwcGVkSGVpZ2h0ID4gMCkKKyAgICAgICAgICAgIG1fY29udGV4dC0+Y29weVRleFN1Yklt
YWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCArIGNsaXBwZWRYIC0geCwgeW9mZnNldCArIGNs
aXBwZWRZIC0geSwgY2xpcHBlZFgsIGNsaXBwZWRZLCBjbGlwcGVkV2lkdGgsIGNsaXBwZWRIZWln
aHQpOworICAgIH0gZWxzZQorICAgICAgICBtX2NvbnRleHQtPmNvcHlUZXhTdWJJbWFnZTJEKHRh
cmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHgsIHksIHdpZHRoLCBoZWlnaHQpOwogfQog
CiBSZWZQdHI8V2ViR0xCdWZmZXI+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZUJ1
ZmZlcigpCkBAIC0xODE4LDI5ICsxODA2LDIyIEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6dmFsaWRhdGVEcmF3QXJyYXlzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0MzCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAoIWlzRXJyb3JHZW5lcmF0ZWRP
bk91dE9mQm91bmRzQWNjZXNzZXMoKSkgewotICAgICAgICAvLyBFbnN1cmUgd2UgaGF2ZSBhIHZh
bGlkIHJlbmRlcmluZyBzdGF0ZQotICAgICAgICBDaGVja2VkPEdDM0RpbnQsIFJlY29yZE92ZXJm
bG93PiBjaGVja2VkRmlyc3QoZmlyc3QpOwotICAgICAgICBDaGVja2VkPEdDM0RpbnQsIFJlY29y
ZE92ZXJmbG93PiBjaGVja2VkQ291bnQoY291bnQpOwotICAgICAgICBDaGVja2VkPEdDM0RpbnQs
IFJlY29yZE92ZXJmbG93PiBjaGVja2VkU3VtID0gY2hlY2tlZEZpcnN0ICsgY2hlY2tlZENvdW50
OwotICAgICAgICBDaGVja2VkPEdDM0RpbnQsIFJlY29yZE92ZXJmbG93PiBjaGVja2VkUHJpbWl0
aXZlQ291bnQocHJpbWl0aXZlQ291bnQpOwotICAgICAgICBpZiAoY2hlY2tlZFN1bS5oYXNPdmVy
Zmxvd2VkKCkgfHwgY2hlY2tlZFByaW1pdGl2ZUNvdW50Lmhhc092ZXJmbG93ZWQoKSB8fCAhdmFs
aWRhdGVWZXJ0ZXhBdHRyaWJ1dGVzKGNoZWNrZWRTdW0udW5zYWZlR2V0KCksIGNoZWNrZWRQcmlt
aXRpdmVDb3VudC51bnNhZmVHZXQoKSkpIHsKLSAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTiwgZnVuY3Rpb25OYW1lLCAiYXR0
ZW1wdCB0byBhY2Nlc3Mgb3V0IG9mIGJvdW5kcyBhcnJheXMiKTsKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBpZiAoIXZhbGlkYXRlU2ltdWxhdGVkVmVydGV4
QXR0cmliMChjaGVja2VkU3VtLnVuc2FmZUdldCgpIC0gMSkpIHsKLSAgICAgICAgICAgIHN5bnRo
ZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTiwgZnVuY3Rp
b25OYW1lLCAiYXR0ZW1wdCB0byBhY2Nlc3Mgb3V0c2lkZSB0aGUgYm91bmRzIG9mIHRoZSBzaW11
bGF0ZWQgdmVydGV4QXR0cmliMCBhcnJheSIpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKCF2YWxpZGF0ZVZlcnRleEF0dHJp
YnV0ZXMoMCkpIHsKLSAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4
dDNEOjpJTlZBTElEX09QRVJBVElPTiwgZnVuY3Rpb25OYW1lLCAiYXR0cmlicyBub3Qgc2V0dXAg
Y29ycmVjdGx5Iik7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KKyAgICAv
LyBFbnN1cmUgd2UgaGF2ZSBhIHZhbGlkIHJlbmRlcmluZyBzdGF0ZS4KKyAgICBDaGVja2VkPEdD
M0RpbnQsIFJlY29yZE92ZXJmbG93PiBjaGVja2VkRmlyc3QoZmlyc3QpOworICAgIENoZWNrZWQ8
R0MzRGludCwgUmVjb3JkT3ZlcmZsb3c+IGNoZWNrZWRDb3VudChjb3VudCk7CisgICAgQ2hlY2tl
ZDxHQzNEaW50LCBSZWNvcmRPdmVyZmxvdz4gY2hlY2tlZFN1bSA9IGNoZWNrZWRGaXJzdCArIGNo
ZWNrZWRDb3VudDsKKyAgICBDaGVja2VkPEdDM0RpbnQsIFJlY29yZE92ZXJmbG93PiBjaGVja2Vk
UHJpbWl0aXZlQ291bnQocHJpbWl0aXZlQ291bnQpOworICAgIGlmIChjaGVja2VkU3VtLmhhc092
ZXJmbG93ZWQoKSB8fCBjaGVja2VkUHJpbWl0aXZlQ291bnQuaGFzT3ZlcmZsb3dlZCgpIHx8ICF2
YWxpZGF0ZVZlcnRleEF0dHJpYnV0ZXMoY2hlY2tlZFN1bS51bnNhZmVHZXQoKSwgY2hlY2tlZFBy
aW1pdGl2ZUNvdW50LnVuc2FmZUdldCgpKSkgeworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihH
cmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwgImF0dGVt
cHQgdG8gYWNjZXNzIG91dCBvZiBib3VuZHMgYXJyYXlzIik7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisgICAgaWYgKCF2YWxpZGF0ZVNpbXVsYXRlZFZlcnRleEF0dHJpYjAoY2hlY2tl
ZFN1bS51bnNhZmVHZXQoKSAtIDEpKSB7CisgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBo
aWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTiwgZnVuY3Rpb25OYW1lLCAiYXR0ZW1wdCB0
byBhY2Nlc3Mgb3V0c2lkZSB0aGUgYm91bmRzIG9mIHRoZSBzaW11bGF0ZWQgdmVydGV4QXR0cmli
MCBhcnJheSIpOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgY29uc3QgY2hh
ciogcmVhc29uID0gImZyYW1lYnVmZmVyIGluY29tcGxldGUiOwotICAgIGlmIChtX2ZyYW1lYnVm
ZmVyQmluZGluZyAmJiAhbV9mcmFtZWJ1ZmZlckJpbmRpbmctPm9uQWNjZXNzKGdyYXBoaWNzQ29u
dGV4dDNEKCksICFpc1Jlc291cmNlU2FmZSgpLCAmcmVhc29uKSkgeworICAgIGlmIChtX2ZyYW1l
YnVmZmVyQmluZGluZyAmJiAhbV9mcmFtZWJ1ZmZlckJpbmRpbmctPm9uQWNjZXNzKGdyYXBoaWNz
Q29udGV4dDNEKCksICZyZWFzb24pKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBo
aWNzQ29udGV4dDNEOjpJTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTiwgZnVuY3Rpb25OYW1l
LCByZWFzb24pOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMTg4OSw0NCArMTg3
MCwzNiBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlRHJhd0VsZW1l
bnRzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgRwogICAgICAgICBzeW50aGVzaXplR0xFcnJv
cihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwgIm5v
IEVMRU1FTlRfQVJSQVlfQlVGRkVSIGJvdW5kIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CisKKyAgICAvLyBFbnN1cmUgd2UgaGF2ZSBhIHZhbGlkIHJlbmRlcmluZyBzdGF0ZS4KKyAg
ICBpZiAoIXZhbGlkYXRlRWxlbWVudEFycmF5U2l6ZShjb3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8
R0MzRGludHB0cj4ob2Zmc2V0KSkpIHsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OLCBmdW5jdGlvbk5hbWUsICJyZXF1ZXN0IG91
dCBvZiBib3VuZHMgZm9yIGN1cnJlbnQgRUxFTUVOVF9BUlJBWV9CVUZGRVIiKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBpZiAoIWNvdW50KQorICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgCi0gICAgaWYgKCFpc0Vycm9yR2VuZXJhdGVkT25PdXRPZkJvdW5kc0FjY2Vzc2Vz
KCkpIHsKLSAgICAgICAgLy8gRW5zdXJlIHdlIGhhdmUgYSB2YWxpZCByZW5kZXJpbmcgc3RhdGUK
LSAgICAgICAgaWYgKCF2YWxpZGF0ZUVsZW1lbnRBcnJheVNpemUoY291bnQsIHR5cGUsIHN0YXRp
Y19jYXN0PEdDM0RpbnRwdHI+KG9mZnNldCkpKSB7Ci0gICAgICAgICAgICBzeW50aGVzaXplR0xF
cnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwg
InJlcXVlc3Qgb3V0IG9mIGJvdW5kcyBmb3IgY3VycmVudCBFTEVNRU5UX0FSUkFZX0JVRkZFUiIp
OwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGlmICghY291
bnQpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIAotICAgICAgICBDaGVja2Vk
PEdDM0RpbnQsIFJlY29yZE92ZXJmbG93PiBjaGVja2VkQ291bnQoY291bnQpOwotICAgICAgICBD
aGVja2VkPEdDM0RpbnQsIFJlY29yZE92ZXJmbG93PiBjaGVja2VkUHJpbWl0aXZlQ291bnQocHJp
bWl0aXZlQ291bnQpOwotICAgICAgICBpZiAoY2hlY2tlZENvdW50Lmhhc092ZXJmbG93ZWQoKSB8
fCBjaGVja2VkUHJpbWl0aXZlQ291bnQuaGFzT3ZlcmZsb3dlZCgpKSB7CisgICAgQ2hlY2tlZDxH
QzNEaW50LCBSZWNvcmRPdmVyZmxvdz4gY2hlY2tlZENvdW50KGNvdW50KTsKKyAgICBDaGVja2Vk
PEdDM0RpbnQsIFJlY29yZE92ZXJmbG93PiBjaGVja2VkUHJpbWl0aXZlQ291bnQocHJpbWl0aXZl
Q291bnQpOworICAgIGlmIChjaGVja2VkQ291bnQuaGFzT3ZlcmZsb3dlZCgpIHx8IGNoZWNrZWRQ
cmltaXRpdmVDb3VudC5oYXNPdmVyZmxvd2VkKCkpIHsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJy
b3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OLCBmdW5jdGlvbk5hbWUsICJh
dHRlbXB0IHRvIGFjY2VzcyBvdXQgb2YgYm91bmRzIGFycmF5cyIpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorICAgIAorICAgIGlmICghdmFsaWRhdGVJbmRleEFycmF5Q29uc2VydmF0
aXZlKHR5cGUsIG51bUVsZW1lbnRzKSB8fCAhdmFsaWRhdGVWZXJ0ZXhBdHRyaWJ1dGVzKG51bUVs
ZW1lbnRzLCBjaGVja2VkUHJpbWl0aXZlQ291bnQudW5zYWZlR2V0KCkpKSB7CisgICAgICAgIGlm
ICghdmFsaWRhdGVJbmRleEFycmF5UHJlY2lzZShjaGVja2VkQ291bnQudW5zYWZlR2V0KCksIHR5
cGUsIHN0YXRpY19jYXN0PEdDM0RpbnRwdHI+KG9mZnNldCksIG51bUVsZW1lbnRzKSB8fCAhdmFs
aWRhdGVWZXJ0ZXhBdHRyaWJ1dGVzKG51bUVsZW1lbnRzLCBjaGVja2VkUHJpbWl0aXZlQ291bnQu
dW5zYWZlR2V0KCkpKSB7CiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0Nv
bnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwgImF0dGVtcHQgdG8gYWNj
ZXNzIG91dCBvZiBib3VuZHMgYXJyYXlzIik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmICghdmFsaWRhdGVJbmRleEFycmF5Q29uc2Vy
dmF0aXZlKHR5cGUsIG51bUVsZW1lbnRzKSB8fCAhdmFsaWRhdGVWZXJ0ZXhBdHRyaWJ1dGVzKG51
bUVsZW1lbnRzLCBjaGVja2VkUHJpbWl0aXZlQ291bnQudW5zYWZlR2V0KCkpKSB7Ci0gICAgICAg
ICAgICBpZiAoIXZhbGlkYXRlSW5kZXhBcnJheVByZWNpc2UoY2hlY2tlZENvdW50LnVuc2FmZUdl
dCgpLCB0eXBlLCBzdGF0aWNfY2FzdDxHQzNEaW50cHRyPihvZmZzZXQpLCBudW1FbGVtZW50cykg
fHwgIXZhbGlkYXRlVmVydGV4QXR0cmlidXRlcyhudW1FbGVtZW50cywgY2hlY2tlZFByaW1pdGl2
ZUNvdW50LnVuc2FmZUdldCgpKSkgewotICAgICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTiwgZnVuY3Rpb25OYW1lLCAiYXR0
ZW1wdCB0byBhY2Nlc3Mgb3V0IG9mIGJvdW5kcyBhcnJheXMiKTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIXZh
bGlkYXRlU2ltdWxhdGVkVmVydGV4QXR0cmliMChudW1FbGVtZW50cykpIHsKLSAgICAgICAgICAg
IHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTiwg
ZnVuY3Rpb25OYW1lLCAiYXR0ZW1wdCB0byBhY2Nlc3Mgb3V0c2lkZSB0aGUgYm91bmRzIG9mIHRo
ZSBzaW11bGF0ZWQgdmVydGV4QXR0cmliMCBhcnJheSIpOwotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICB9CisgICAgfQogCi0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKCF2YWxp
ZGF0ZVZlcnRleEF0dHJpYnV0ZXMoMCkpIHsKLSAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTiwgZnVuY3Rpb25OYW1lLCAiYXR0
cmlicyBub3Qgc2V0dXAgY29ycmVjdGx5Iik7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIH0KKyAgICBpZiAoIXZhbGlkYXRlU2ltdWxhdGVkVmVydGV4QXR0cmliMChudW1FbGVt
ZW50cykpIHsKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklO
VkFMSURfT1BFUkFUSU9OLCBmdW5jdGlvbk5hbWUsICJhdHRlbXB0IHRvIGFjY2VzcyBvdXRzaWRl
IHRoZSBib3VuZHMgb2YgdGhlIHNpbXVsYXRlZCB2ZXJ0ZXhBdHRyaWIwIGFycmF5Iik7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCiAgICAgY29uc3QgY2hhciogcmVhc29uID0g
ImZyYW1lYnVmZmVyIGluY29tcGxldGUiOwotICAgIGlmIChtX2ZyYW1lYnVmZmVyQmluZGluZyAm
JiAhbV9mcmFtZWJ1ZmZlckJpbmRpbmctPm9uQWNjZXNzKGdyYXBoaWNzQ29udGV4dDNEKCksICFp
c1Jlc291cmNlU2FmZSgpLCAmcmVhc29uKSkgeworICAgIGlmIChtX2ZyYW1lYnVmZmVyQmluZGlu
ZyAmJiAhbV9mcmFtZWJ1ZmZlckJpbmRpbmctPm9uQWNjZXNzKGdyYXBoaWNzQ29udGV4dDNEKCks
ICZyZWFzb24pKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNE
OjpJTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTiwgZnVuY3Rpb25OYW1lLCByZWFzb24pOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMzAxNCw3ICsyOTg3LDcgQEAgdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpyZWFkUGl4ZWxzKEdDM0RpbnQgeCwgR0MzRGludCB5
LCBHQzNEc2l6ZWkgd2lkdGgKICAgICBHQzNEZW51bSBpbnRlcm5hbEZvcm1hdCA9IDA7CiAgICAg
aWYgKG1fZnJhbWVidWZmZXJCaW5kaW5nKSB7CiAgICAgICAgIGNvbnN0IGNoYXIqIHJlYXNvbiA9
ICJmcmFtZWJ1ZmZlciBpbmNvbXBsZXRlIjsKLSAgICAgICAgaWYgKCFtX2ZyYW1lYnVmZmVyQmlu
ZGluZy0+b25BY2Nlc3MoZ3JhcGhpY3NDb250ZXh0M0QoKSwgIWlzUmVzb3VyY2VTYWZlKCksICZy
ZWFzb24pKSB7CisgICAgICAgIGlmICghbV9mcmFtZWJ1ZmZlckJpbmRpbmctPm9uQWNjZXNzKGdy
YXBoaWNzQ29udGV4dDNEKCksICZyZWFzb24pKSB7CiAgICAgICAgICAgICBzeW50aGVzaXplR0xF
cnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04sICJy
ZWFkUGl4ZWxzIiwgcmVhc29uKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAt
MzI4MywxOCArMzI1Niw4IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dGV4SW1h
Z2UyREJhc2UoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHCiAgICAgQVNTRVJUKHRl
eCk7CiAgICAgQVNTRVJUKHZhbGlkYXRlTlBPVFRleHR1cmVMZXZlbCh3aWR0aCwgaGVpZ2h0LCBs
ZXZlbCwgInRleEltYWdlMkQiKSk7CiAgICAgaWYgKCFwaXhlbHMpIHsKLSAgICAgICAgLy8gTm90
ZTogQ2hyb21pdW0ncyBPcGVuR0wgaW1wbGVtZW50YXRpb24gY2xlYXJzIHRleHR1cmVzIGFuZCBp
c1Jlc291cmNlU2FmZSgpIGlzIHRoZXJlZm9yZSB0cnVlLgotICAgICAgICAvLyBGb3Igb3RoZXIg
aW1wbGVtZW50YXRpb25zLCBpZiB0aGV5IGFyZSB1c2luZyBBTkdMRV9kZXB0aF90ZXh0dXJlLCBB
TkdMRSBkZXB0aCB0ZXh0dXJlcwotICAgICAgICAvLyBjYW4gbm90IGJlIGNsZWFyZWQgd2l0aCB0
ZXhJbWFnZTJEIGFuZCBtdXN0IGJlIGNsZWFyZWQgYnkgYmluZGluZyB0byBhbiBmYm8gYW5kIGNh
bGxpbmcKLSAgICAgICAgLy8gY2xlYXIuCi0gICAgICAgIGlmIChpc1Jlc291cmNlU2FmZSgpKQot
ICAgICAgICAgICAgbV9jb250ZXh0LT50ZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFs
Rm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgbnVsbHB0cik7Ci0g
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgYm9vbCBzdWNjZWVkID0gbV9jb250ZXh0LT50ZXhJ
bWFnZTJEUmVzb3VyY2VTYWZlKHRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCB3aWR0aCwg
aGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBtX3VucGFja0FsaWdubWVudCk7Ci0g
ICAgICAgICAgICBpZiAoIXN1Y2NlZWQpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9CisgICAgICAgIGlmICghbV9jb250ZXh0LT50ZXhJbWFnZTJEUmVzb3VyY2VTYWZlKHRhcmdl
dCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwg
dHlwZSwgbV91bnBhY2tBbGlnbm1lbnQpKQorICAgICAgICAgICAgcmV0dXJuOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIEFTU0VSVCh2YWxpZGF0ZVNldHRhYmxlVGV4SW50ZXJuYWxGb3JtYXQoInRl
eEltYWdlMkQiLCBpbnRlcm5hbEZvcm1hdCkpOwogICAgICAgICBtX2NvbnRleHQtPm1vdmVFcnJv
cnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpOwpAQCAtMzk3OCwyNiArMzk0MSwyNCBAQCB2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNvcHlUZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwg
R0MzRGludCBsZXZlbCwgRwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNvbnN0IGNoYXIq
IHJlYXNvbiA9ICJmcmFtZWJ1ZmZlciBpbmNvbXBsZXRlIjsKLSAgICBpZiAobV9mcmFtZWJ1ZmZl
ckJpbmRpbmcgJiYgIW1fZnJhbWVidWZmZXJCaW5kaW5nLT5vbkFjY2VzcyhncmFwaGljc0NvbnRl
eHQzRCgpLCAhaXNSZXNvdXJjZVNhZmUoKSwgJnJlYXNvbikpIHsKKyAgICBpZiAobV9mcmFtZWJ1
ZmZlckJpbmRpbmcgJiYgIW1fZnJhbWVidWZmZXJCaW5kaW5nLT5vbkFjY2VzcyhncmFwaGljc0Nv
bnRleHQzRCgpLCAmcmVhc29uKSkgewogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGlj
c0NvbnRleHQzRDo6SU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04sICJjb3B5VGV4SW1hZ2Uy
RCIsIHJlYXNvbik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2xlYXJJZkNvbXBvc2l0
ZWQoKTsKLSAgICBpZiAoaXNSZXNvdXJjZVNhZmUoKSkKKworICAgIEdDM0RpbnQgY2xpcHBlZFgs
IGNsaXBwZWRZOworICAgIEdDM0RzaXplaSBjbGlwcGVkV2lkdGgsIGNsaXBwZWRIZWlnaHQ7Cisg
ICAgaWYgKGNsaXAyRCh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBnZXRCb3VuZEZyYW1lYnVmZmVyV2lk
dGgoKSwgZ2V0Qm91bmRGcmFtZWJ1ZmZlckhlaWdodCgpLCAmY2xpcHBlZFgsICZjbGlwcGVkWSwg
JmNsaXBwZWRXaWR0aCwgJmNsaXBwZWRIZWlnaHQpKSB7CisgICAgICAgIG1fY29udGV4dC0+dGV4
SW1hZ2UyRFJlc291cmNlU2FmZSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgs
IGhlaWdodCwgYm9yZGVyLAorICAgICAgICAgICAgaW50ZXJuYWxGb3JtYXQsIEdyYXBoaWNzQ29u
dGV4dDNEOjpVTlNJR05FRF9CWVRFLCBtX3VucGFja0FsaWdubWVudCk7CisgICAgICAgIGlmIChj
bGlwcGVkV2lkdGggPiAwICYmIGNsaXBwZWRIZWlnaHQgPiAwKSB7CisgICAgICAgICAgICBtX2Nv
bnRleHQtPmNvcHlUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGNsaXBwZWRYIC0geCwgY2xp
cHBlZFkgLSB5LAorICAgICAgICAgICAgICAgIGNsaXBwZWRYLCBjbGlwcGVkWSwgY2xpcHBlZFdp
ZHRoLCBjbGlwcGVkSGVpZ2h0KTsKKyAgICAgICAgfQorICAgIH0gZWxzZQogICAgICAgICBtX2Nv
bnRleHQtPmNvcHlUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCB4LCB5
LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIpOwotICAgIGVsc2UgewotICAgICAgICBHQzNEaW50IGNs
aXBwZWRYLCBjbGlwcGVkWTsKLSAgICAgICAgR0MzRHNpemVpIGNsaXBwZWRXaWR0aCwgY2xpcHBl
ZEhlaWdodDsKLSAgICAgICAgaWYgKGNsaXAyRCh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBnZXRCb3Vu
ZEZyYW1lYnVmZmVyV2lkdGgoKSwgZ2V0Qm91bmRGcmFtZWJ1ZmZlckhlaWdodCgpLCAmY2xpcHBl
ZFgsICZjbGlwcGVkWSwgJmNsaXBwZWRXaWR0aCwgJmNsaXBwZWRIZWlnaHQpKSB7Ci0gICAgICAg
ICAgICBtX2NvbnRleHQtPnRleEltYWdlMkRSZXNvdXJjZVNhZmUodGFyZ2V0LCBsZXZlbCwgaW50
ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwKLSAgICAgICAgICAgICAgICBpbnRl
cm5hbEZvcm1hdCwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIG1fdW5wYWNrQWxp
Z25tZW50KTsKLSAgICAgICAgICAgIGlmIChjbGlwcGVkV2lkdGggPiAwICYmIGNsaXBwZWRIZWln
aHQgPiAwKSB7Ci0gICAgICAgICAgICAgICAgbV9jb250ZXh0LT5jb3B5VGV4U3ViSW1hZ2UyRCh0
YXJnZXQsIGxldmVsLCBjbGlwcGVkWCAtIHgsIGNsaXBwZWRZIC0geSwKLSAgICAgICAgICAgICAg
ICAgICAgY2xpcHBlZFgsIGNsaXBwZWRZLCBjbGlwcGVkV2lkdGgsIGNsaXBwZWRIZWlnaHQpOwot
ICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG1fY29udGV4dC0+Y29w
eVRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIHgsIHksIHdpZHRoLCBo
ZWlnaHQsIGJvcmRlcik7Ci0gICAgfQorCiAgICAgLy8gRklYTUU6IGlmIHRoZSBmcmFtZWJ1ZmZl
ciBpcyBub3QgY29tcGxldGUsIG5vbmUgb2YgdGhlIGJlbG93IHNob3VsZCBiZSBleGVjdXRlZC4K
ICAgICB0ZXgtPnNldExldmVsSW5mbyh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgd2lk
dGgsIGhlaWdodCwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZS5oCmluZGV4IDY2ZGMwZDE5NTYzODUyNGFlZGQxYjQwOWY4ZGU0YTFhYjMzYTI3YjcuLjJiMzE2
YmRiMWRmYTgyMTFmOTUxMTVkZjRlMzE0YTk4NjNlODBhOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKQEAgLTM3
MSwxMCArMzcxLDYgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgaXNHTEVTMkNvbXBsaWFudCgpIHsg
cmV0dXJuIG1faXNHTEVTMkNvbXBsaWFudDsgfQogICAgIC8vIFF1ZXJ5IGlmIHRoZSBHTCBpbXBs
ZW1lbnRhdGlvbiBpcyBOUE9UIHN0cmljdC4KICAgICBib29sIGlzR0xFUzJOUE9UU3RyaWN0KCkg
eyByZXR1cm4gbV9pc0dMRVMyTlBPVFN0cmljdDsgfQotICAgIC8vIFF1ZXJ5IGlmIHRoZSBHTCBp
bXBsZW1lbnRhdGlvbiBnZW5lcmF0ZXMgZXJyb3JzIG9uIG91dC1vZi1ib3VuZHMgYnVmZmVyIGFj
Y2Vzc2VzLgotICAgIGJvb2wgaXNFcnJvckdlbmVyYXRlZE9uT3V0T2ZCb3VuZHNBY2Nlc3Nlcygp
IHsgcmV0dXJuIG1faXNFcnJvckdlbmVyYXRlZE9uT3V0T2ZCb3VuZHNBY2Nlc3NlczsgfQotICAg
IC8vIFF1ZXJ5IGlmIHRoZSBHTCBpbXBsZW1lbnRhdGlvbiBpbml0aWFsaXplcyB0ZXh0dXJlcy9y
ZW5kZXJidWZmZXJzIHRvIDAuCi0gICAgYm9vbCBpc1Jlc291cmNlU2FmZSgpIHsgcmV0dXJuIG1f
aXNSZXNvdXJjZVNhZmU7IH0KICAgICAvLyBRdWVyeSBpZiBkZXB0aF9zdGVuY2lsIGJ1ZmZlciBp
cyBzdXBwb3J0ZWQuCiAgICAgYm9vbCBpc0RlcHRoU3RlbmNpbFN1cHBvcnRlZCgpIHsgcmV0dXJu
IG1faXNEZXB0aFN0ZW5jaWxTdXBwb3J0ZWQ7IH0KIApAQCAtNTM2LDggKzUzMiw2IEBAIHByb3Rl
Y3RlZDoKIAogICAgIGJvb2wgbV9pc0dMRVMyQ29tcGxpYW50OwogICAgIGJvb2wgbV9pc0dMRVMy
TlBPVFN0cmljdDsKLSAgICBib29sIG1faXNFcnJvckdlbmVyYXRlZE9uT3V0T2ZCb3VuZHNBY2Nl
c3NlczsKLSAgICBib29sIG1faXNSZXNvdXJjZVNhZmU7CiAgICAgYm9vbCBtX2lzRGVwdGhTdGVu
Y2lsU3VwcG9ydGVkOwogICAgIGJvb2wgbV9pc1JvYnVzdG5lc3NFWFRTdXBwb3J0ZWQ7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dDNELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dDNELmNwcAppbmRleCA2ZWRmN2FlZjliY2I0YjVlZDU5NmY3MmY2Y2VkMGJkZWE2Zjc2MDAwLi42
ZTkyNzYxZDRmZTNmN2FlN2I4ZjMyOTM1MjNlYmZmYWZhNGVkMjMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwCkBA
IC0xNDcsNyArMTQ3LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6dGV4SW1hZ2UyRFJlc291
cmNlU2FmZShHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEcKIHsKICAgICBBU1NFUlQo
dW5wYWNrQWxpZ25tZW50ID09IDEgfHwgdW5wYWNrQWxpZ25tZW50ID09IDIgfHwgdW5wYWNrQWxp
Z25tZW50ID09IDQgfHwgdW5wYWNrQWxpZ25tZW50ID09IDgpOwogICAgIHN0ZDo6dW5pcXVlX3B0
cjx1bnNpZ25lZCBjaGFyW10+IHplcm87Ci0gICAgaWYgKCFpc1Jlc291cmNlU2FmZSgpICYmIHdp
ZHRoID4gMCAmJiBoZWlnaHQgPiAwKSB7CisgICAgaWYgKHdpZHRoID4gMCAmJiBoZWlnaHQgPiAw
KSB7CiAgICAgICAgIHVuc2lnbmVkIGludCBzaXplOwogICAgICAgICBHQzNEZW51bSBlcnJvciA9
IGNvbXB1dGVJbWFnZVNpemVJbkJ5dGVzKGZvcm1hdCwgdHlwZSwgd2lkdGgsIGhlaWdodCwgdW5w
YWNrQWxpZ25tZW50LCAmc2l6ZSwgMCk7CiAgICAgICAgIGlmIChlcnJvciAhPSBHcmFwaGljc0Nv
bnRleHQzRDo6Tk9fRVJST1IpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCmluZGV4IGY4ZWE4OGE1ZGZhZDA0YzM4YzM3YWI5
OGUwZTZkYWY1MjAwM2QxZjguLjZkZjg5MWQ0MTFiYzMxMGIzNGYxZWFmZTc5NmY3NTI3M2FmMDJk
MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dDNELmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0M0QuaApAQCAtMTMwNiw3ICsxMzA2LDYgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAg
ICAgaW50IG1fY3VycmVudFdpZHRoLCBtX2N1cnJlbnRIZWlnaHQ7Ci0gICAgYm9vbCBpc1Jlc291
cmNlU2FmZSgpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmV0YWluUHRyPFdlYkdMTGF5
ZXI+IG1fd2ViR0xMYXllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xD
b21tb24uY3BwCmluZGV4IDE4NjM3MjE5NmNlY2YzMmIzOWNmYmZiNzA0ZDdlOWIwNTRiMzk0ZGYu
LjBiMmFkMDU4NTA0YzNlNWUyMGY3ZDFmYjc3MmZmZmRkYTZmMzFiMGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9w
ZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcApAQCAtMTU2LDExICsxNTYsNiBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFy
KiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbgogICAgIH0KIH0KIAotYm9vbCBHcmFwaGljc0NvbnRl
eHQzRDo6aXNSZXNvdXJjZVNhZmUoKQotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQogdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZm
ZXIqIGltYWdlQnVmZmVyKQogewogICAgIGludCByb3dCeXRlcyA9IG1fY3VycmVudFdpZHRoICog
NDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>