<?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>188773</bug_id>
          
          <creation_ts>2018-08-20 19:39:12 -0700</creation_ts>
          <short_desc>[WHLSL] Allow native types to have type arguments (like &quot;vector&lt;float, 4&gt;&quot;)</short_desc>
          <delta_ts>2018-10-13 15:26:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>176199</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>fpizlo</cc>
    
    <cc>rmorisset</cc>
    
    <cc>saam</cc>
    
    <cc>tdenney</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1451925</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-08-20 19:39:12 -0700</bug_when>
    <thetext>[WHLSL] Allow native types to have type arguments (like &quot;vector&lt;float, 4&gt;&quot;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451926</commentid>
    <comment_count>1</comment_count>
      <attachid>347598</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-08-20 19:39:46 -0700</bug_when>
    <thetext>Created attachment 347598
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1452213</commentid>
    <comment_count>2</comment_count>
      <attachid>347673</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-08-21 13:03:52 -0700</bug_when>
    <thetext>Created attachment 347673
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1452369</commentid>
    <comment_count>3</comment_count>
      <attachid>347718</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-08-21 15:58:46 -0700</bug_when>
    <thetext>Created attachment 347718
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1452492</commentid>
    <comment_count>4</comment_count>
      <attachid>347754</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-08-21 19:26:12 -0700</bug_when>
    <thetext>Created attachment 347754
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1452498</commentid>
    <comment_count>5</comment_count>
      <attachid>347757</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-08-21 19:39:20 -0700</bug_when>
    <thetext>Created attachment 347757
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1452524</commentid>
    <comment_count>6</comment_count>
      <attachid>347757</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-08-21 21:55:51 -0700</bug_when>
    <thetext>Comment on attachment 347757
WIP

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

&gt; Tools/WebGPUShadingLanguageRI/Checker.js:257
&gt; +        if (!node.type || !node.type.visit)

node.type.visit

&gt; Tools/WebGPUShadingLanguageRI/checkTypesWithArguments.js:27
&gt; +function checkTypesWithArguments(program)

File name needs to be capitalized</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1452525</commentid>
    <comment_count>7</comment_count>
      <attachid>347757</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-08-21 21:57:58 -0700</bug_when>
    <thetext>Comment on attachment 347757
WIP

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

&gt; Tools/WebGPUShadingLanguageRI/Checker.js:259
&gt; +        if (!(node.type instanceof StructType)) // FIXME: Why don&apos;t we recurse on StructTypes?

Can we fix this?

&gt; Tools/WebGPUShadingLanguageRI/Intrinsics.js:68
&gt; +            // FIXME: Make this math obey IEEE 754.

Test this

&gt; Tools/WebGPUShadingLanguageRI/Intrinsics.js:316
&gt; +                    // FIXME: Figure out what to put here.

Perhaps delete the comment

&gt; Tools/WebGPUShadingLanguageRI/StandardLibrary.js:205
&gt;  // FIXME: Once the standard library has been replaced with a new version, this comments should be removed.

bugzilla link?

&gt; Tools/WebGPUShadingLanguageRI/TypeRef.js:101
&gt; +                // FIXME: This is probably wrong.

Let&apos;s see if we can figure out a way to do this better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1452780</commentid>
    <comment_count>8</comment_count>
      <attachid>347837</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-08-22 13:32:58 -0700</bug_when>
    <thetext>Created attachment 347837
Needs tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1452805</commentid>
    <comment_count>9</comment_count>
      <attachid>347846</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-08-22 14:21:52 -0700</bug_when>
    <thetext>Created attachment 347846
Setting .type in Checker will break TypeDefResolver</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1452858</commentid>
    <comment_count>10</comment_count>
      <attachid>347863</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-08-22 15:48:59 -0700</bug_when>
    <thetext>Created attachment 347863
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1453172</commentid>
    <comment_count>11</comment_count>
      <attachid>347863</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-08-23 12:52:23 -0700</bug_when>
    <thetext>Comment on attachment 347863
Patch

Clearing flags on attachment: 347863

Committed r235237: &lt;https://trac.webkit.org/changeset/235237&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1453173</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-08-23 12:52:25 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1453174</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-08-23 12:53:34 -0700</bug_when>
    <thetext>&lt;rdar://problem/43654376&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1468891</commentid>
    <comment_count>14</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-10-13 15:26:19 -0700</bug_when>
    <thetext>Migrated to https://github.com/gpuweb/WHLSL/issues/92</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347598</attachid>
            <date>2018-08-20 19:39:46 -0700</date>
            <delta_ts>2018-08-21 13:03:50 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-188773-20180820193945.patch</filename>
            <type>text/plain</type>
            <size>38386</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1MDk5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMTZhMTQ0ZmE2ZDA3MWJmY2FmZmY0YTMzMGY0YzFlMGUz
MjYwZDIzOC4uNGQ1ODAxZTBkZTllOTVkZTVlMDA4ODkyMTg0NzYzMjg3NWIwOWZmYSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMx
IEBACisyMDE4LTA4LTIwICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CisKKyAgICAgICAgW1dITFNMXSBBbGxvdyBuYXRpdmUgdHlwZXMgdG8gaGF2ZSB0eXBlIGFyZ3Vt
ZW50cyAobGlrZSAidmVjdG9yPGZsb2F0LCA0PiIpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODg3NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0ludHJpbnNp
Y3MuanM6CisgICAgICAgIChJbnRyaW5zaWNzLmNhc3QpOgorICAgICAgICAoSW50cmluc2ljcy5i
aXR3aXNlQ2FzdCk6CisgICAgICAgIChJbnRyaW5zaWNzLmNhc3RUb0hhbGYpOgorICAgICAgICAo
SW50cmluc2ljcy4pOgorICAgICAgICAoSW50cmluc2ljcyk6CisgICAgICAgICogV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvTmF0aXZlVHlwZS5qczoKKyAgICAgICAgKE5hdGl2ZVR5cGUpOgorICAg
ICAgICAoTmF0aXZlVHlwZS5wcm90b3R5cGUuZ2V0IHR5cGVBcmd1bWVudHMpOgorICAgICAgICAo
TmF0aXZlVHlwZS5wcm90b3R5cGUudG9TdHJpbmcpOgorICAgICAgICAoTmF0aXZlVHlwZS5jcmVh
dGUpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1BhcnNlLmpzOgorICAgICAg
ICAoaXNDYWxsRXhwcmVzc2lvbik6CisgICAgICAgIChwYXJzZU5hdGl2ZSk6CisgICAgICAgICog
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhbmRhcmRMaWJyYXJ5LmpzOgorICAgICAgICAoYm9v
bC5vcGVyYXRvcik6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVmVjdG9yVHlw
ZS5qczoKKyAgICAgICAgKFZlY3RvclR5cGUpOgorICAgICAgICAoVmVjdG9yVHlwZS5wcm90b3R5
cGUuZ2V0IGVsZW1lbnRUeXBlKToKKyAgICAgICAgKFZlY3RvclR5cGUucHJvdG90eXBlLmdldCBu
dW1FbGVtZW50c1ZhbHVlKToKKwogMjAxOC0wOC0yMCAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFy
ZEBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViS2l0VGVzdFJ1bm5lcjogQWRkIHdhdGNoT1MgZW50
aXRsZW1lbnRzCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9JbnRy
aW5zaWNzLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvSW50cmluc2ljcy5qcwpp
bmRleCA1MGQ0MGMwYzBlNDdlMTEyYmM3NGNjZmNjYjcwNDk0MjcxMTZiMGZiLi45N2ViNzRiMTE2
NzdmZWYxMGVmYzk1NmMzNTMyY2U5Zjc0ZGJmNWFmIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9JbnRyaW5zaWNzLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL0ludHJpbnNpY3MuanMKQEAgLTMzLDE1ICszMyw3IEBAIGNsYXNzIEludHJpbnNp
Y3MgewogICAgICAgICAvLyB0byBjYXRjaCB0aGUgaW50cmluc2ljcyBtdXN0IGJlIGJhc2VkIG9u
IHRoZSB0eXBlIG5hbWVzIHRoYXQgU3RhbmRhcmRMaWJyYXJ5LmpzIHVzZXMuCiAgICAgICAgIC8v
IEZvciBleGFtcGxlLCBpZiBhIG5hdGl2ZSBmdW5jdGlvbiBpcyBkZWNsYXJlZCB1c2luZyAiaW50
IiByYXRoZXIgdGhhbiAiaW50IiwgdGhlbiB3ZSBtdXN0CiAgICAgICAgIC8vIHVzZSAiaW50IiBo
ZXJlLCBzaW5jZSB3ZSBkb24ndCB5ZXQga25vdyB0aGF0IHRoZXkgYXJlIHRoZSBzYW1lIHR5cGUu
Ci0gICAgICAgIAotICAgICAgICB0aGlzLl9tYXAuc2V0KAotICAgICAgICAgICAgIm5hdGl2ZSB0
eXBlZGVmIHZvaWQiLAotICAgICAgICAgICAgdHlwZSA9PiB7Ci0gICAgICAgICAgICAgICAgdGhp
cy52b2lkID0gdHlwZTsKLSAgICAgICAgICAgICAgICB0eXBlLnNpemUgPSAwOwotICAgICAgICAg
ICAgICAgIHR5cGUucG9wdWxhdGVEZWZhdWx0VmFsdWUgPSAoKSA9PiB7IH07Ci0gICAgICAgICAg
ICB9KTsKLSAgICAgICAgCisKICAgICAgICAgZnVuY3Rpb24gaXNCaXR3aXNlRXF1aXZhbGVudChs
ZWZ0LCByaWdodCkKICAgICAgICAgewogICAgICAgICAgICAgbGV0IGRvdWJsZUFycmF5ID0gbmV3
IEZsb2F0NjRBcnJheSgxKTsKQEAgLTU2LDU4ICs0OCw4MyBAQCBjbGFzcyBJbnRyaW5zaWNzIHsK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKKyAgICAgICAgZnVuY3Rpb24g
Y2FzdCh0eXBlZEFycmF5Q29uc3RydWN0b3IsIG51bWJlcikKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIGFycmF5ID0gbmV3IHR5cGVkQXJyYXlDb25zdHJ1Y3RvcigxKTsKKyAgICAgICAgICAg
IGFycmF5WzBdID0gbnVtYmVyOworICAgICAgICAgICAgcmV0dXJuIGFycmF5WzBdOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gYml0d2lzZUNhc3QodHlwZWRBcnJheUNvbnN0cnVjdG9y
MSwgdHlwZWRBcnJheUNvbnN0cnVjdG9yMiwgdmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGxldCB0eXBlZEFycmF5MSA9IG5ldyB0eXBlZEFycmF5Q29uc3RydWN0b3IxKDEpOworICAgICAg
ICAgICAgbGV0IHR5cGVkQXJyYXkyID0gbmV3IHR5cGVkQXJyYXlDb25zdHJ1Y3RvcjIodHlwZWRB
cnJheTEuYnVmZmVyKTsKKyAgICAgICAgICAgIHR5cGVkQXJyYXkxWzBdID0gdmFsdWU7CisgICAg
ICAgICAgICByZXR1cm4gdHlwZWRBcnJheTJbMF07CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBjYXN0VG9IYWxmKG51bWJlcikKKyAgICAgICAgeworICAgICAgICAgICAgLy8gRklYTUU6
IE1ha2UgdGhpcyBtYXRoIG9iZXkgSUVFRSA3NTQuCisgICAgICAgICAgICBpZiAoTnVtYmVyLmlz
TmFOKG51bWJlcikpCisgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyCisgICAgICAgICAgICBp
ZiAobnVtYmVyID4gNjU1MDQpCisgICAgICAgICAgICAgICAgcmV0dXJuIE51bWJlci5QT1NJVElW
RV9JTkZJTklUWTsKKyAgICAgICAgICAgIGlmIChudW1iZXIgPCAtNjU1MDQpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIE51bWJlci5ORUdBVElWRV9JTkZJTklUWTsKKyAgICAgICAgICAgIGlmIChu
dW1iZXIgPiAwICYmIG51bWJlciA8IE1hdGgucG93KDIsIC0yNCkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgICAgICBpZiAobnVtYmVyIDwgMCAmJiBudW1iZXIgPiAtTWF0aC5w
b3coMiwgLTI0KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTA7CisgICAgICAgICAgICBsZXQg
ZG91YmxlQXJyYXkgPSBuZXcgRmxvYXQ2NEFycmF5KDEpOworICAgICAgICAgICAgbGV0IHVpbnRB
cnJheSA9IG5ldyBVaW50OEFycmF5KGRvdWJsZUFycmF5LmJ1ZmZlcik7CisgICAgICAgICAgICBk
b3VibGVBcnJheVswXSA9IG51bWJlcjsKKyAgICAgICAgICAgIGxldCBzaWduID0gdWludEFycmF5
WzddICYgMHg4MDsKKyAgICAgICAgICAgIGxldCBleHBvbmVudCA9ICgodWludEFycmF5WzddICYg
MHg3ZikgPDwgNCkgfCAoKHVpbnRBcnJheVs2XSAmIDB4ZjApID4+PiA0KTsKKyAgICAgICAgICAg
IGxldCBzaWduaWZpY2FuZCA9ICgodWludEFycmF5WzZdICYgMHgwZikgPDwgNikgfCAoKHVpbnRB
cnJheVs1XSAmIDB4ZmMpID4+PiAyKTsKKworICAgICAgICAgICAgaWYgKChleHBvbmVudCAtIDEw
MjMpIDwgLTE0KSB7CisgICAgICAgICAgICAgICAgZXhwb25lbnQgPSAwOworICAgICAgICAgICAg
ICAgIHNpZ25pZmljYW5kID0gKE1hdGguYWJzKG51bWJlcikgKiBNYXRoLnBvdygyLCAyNCkpID4+
PiAwOworICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IE1hdGgucG93KDIsIC0xNCkgKiBzaWdu
aWZpY2FuZCAvIDEwMjQ7CisgICAgICAgICAgICAgICAgaWYgKHNpZ24gIT0gMCkKKyAgICAgICAg
ICAgICAgICAgICAgdmFsdWUgKj0gLTE7CisgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBkb3VibGVBcnJheVswXSA9IDA7CisKKyAgICAg
ICAgICAgIHVpbnRBcnJheVs3XSB8PSBzaWduOworICAgICAgICAgICAgdWludEFycmF5WzddIHw9
IChleHBvbmVudCA+Pj4gNCk7CisgICAgICAgICAgICB1aW50QXJyYXlbNl0gfD0gKChleHBvbmVu
dCA8PCA0KSAmIDB4ZjApOworICAgICAgICAgICAgdWludEFycmF5WzZdIHw9IChzaWduaWZpY2Fu
ZCA+Pj4gNik7CisgICAgICAgICAgICB1aW50QXJyYXlbNV0gfD0gKChzaWduaWZpY2FuZCA8PCAy
KSAmIDB4ZmMpOworCisgICAgICAgICAgICByZXR1cm4gZG91YmxlQXJyYXlbMF07CisgICAgICAg
IH0KKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAotICAgICAgICAgICAgIm5hdGl2ZSB0eXBlZGVm
IGludCIsCisgICAgICAgICAgICAibmF0aXZlIHR5cGVkZWYgdm9pZCIsCiAgICAgICAgICAgICB0
eXBlID0+IHsKLSAgICAgICAgICAgICAgICB0aGlzLmludCA9IHR5cGU7Ci0gICAgICAgICAgICAg
ICAgdHlwZS5pc1ByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgdHlwZS5pc0ludCA9
IHRydWU7Ci0gICAgICAgICAgICAgICAgdHlwZS5pc051bWJlciA9IHRydWU7Ci0gICAgICAgICAg
ICAgICAgdHlwZS5pc1NpZ25lZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgdHlwZS5jYW5SZXBy
ZXNlbnQgPSB2YWx1ZSA9PiBpc0JpdHdpc2VFcXVpdmFsZW50KHZhbHVlIHwgMCwgdmFsdWUpOwot
ICAgICAgICAgICAgICAgIHR5cGUuc2l6ZSA9IDE7Ci0gICAgICAgICAgICAgICAgdHlwZS5kZWZh
dWx0VmFsdWUgPSAwOwotICAgICAgICAgICAgICAgIHR5cGUuY3JlYXRlTGl0ZXJhbCA9IChvcmln
aW4sIHZhbHVlKSA9PiBJbnRMaXRlcmFsLndpdGhUeXBlKG9yaWdpbiwgdmFsdWUgfCAwLCB0eXBl
KTsKLSAgICAgICAgICAgICAgICB0eXBlLnN1Y2Nlc3NvclZhbHVlID0gdmFsdWUgPT4gKHZhbHVl
ICsgMSkgfCAwOwotICAgICAgICAgICAgICAgIHR5cGUudmFsdWVzRXF1YWwgPSAoYSwgYikgPT4g
YSA9PT0gYjsKLSAgICAgICAgICAgICAgICB0eXBlLnBvcHVsYXRlRGVmYXVsdFZhbHVlID0gKGJ1
ZmZlciwgb2Zmc2V0KSA9PiBidWZmZXIuc2V0KG9mZnNldCwgMCk7Ci0gICAgICAgICAgICAgICAg
dHlwZS5mb3JtYXRWYWx1ZUZyb21JbnRMaXRlcmFsID0gdmFsdWUgPT4gdmFsdWUgfCAwOwotICAg
ICAgICAgICAgICAgIHR5cGUuZm9ybWF0VmFsdWVGcm9tVWludExpdGVyYWwgPSB2YWx1ZSA9PiB2
YWx1ZSB8IDA7Ci0gICAgICAgICAgICAgICAgdHlwZS5hbGxWYWx1ZXMgPSBmdW5jdGlvbiooKSB7
IAotICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSAweGZmZmZmZmZmOyAr
K2kpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGkgfCAwOwotICAgICAg
ICAgICAgICAgICAgICAgICAgeWllbGQge3ZhbHVlOiB2YWx1ZSwgbmFtZTogdmFsdWV9OwotICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICB0
aGlzLnZvaWQgPSB0eXBlOworICAgICAgICAgICAgICAgIHR5cGUuc2l6ZSA9IDA7CisgICAgICAg
ICAgICAgICAgdHlwZS5wb3B1bGF0ZURlZmF1bHRWYWx1ZSA9ICgpID0+IHsgfTsKICAgICAgICAg
ICAgIH0pOwogCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCi0gICAgICAgICAgICAibmF0aXZlIHR5
cGVkZWYgdWludCIsCisgICAgICAgICAgICAibmF0aXZlIHR5cGVkZWYgYm9vbCIsCiAgICAgICAg
ICAgICB0eXBlID0+IHsKLSAgICAgICAgICAgICAgICB0aGlzLnVpbnQgPSB0eXBlOworICAgICAg
ICAgICAgICAgIHRoaXMuYm9vbCA9IHR5cGU7CiAgICAgICAgICAgICAgICAgdHlwZS5pc1ByaW1p
dGl2ZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgdHlwZS5pc0ludCA9IHRydWU7Ci0gICAgICAg
ICAgICAgICAgdHlwZS5pc051bWJlciA9IHRydWU7Ci0gICAgICAgICAgICAgICAgdHlwZS5pc1Np
Z25lZCA9IGZhbHNlOwotICAgICAgICAgICAgICAgIHR5cGUuY2FuUmVwcmVzZW50ID0gdmFsdWUg
PT4gaXNCaXR3aXNlRXF1aXZhbGVudCh2YWx1ZSA+Pj4gMCwgdmFsdWUpOwogICAgICAgICAgICAg
ICAgIHR5cGUuc2l6ZSA9IDE7Ci0gICAgICAgICAgICAgICAgdHlwZS5kZWZhdWx0VmFsdWUgPSAw
OwotICAgICAgICAgICAgICAgIHR5cGUuY3JlYXRlTGl0ZXJhbCA9IChvcmlnaW4sIHZhbHVlKSA9
PiBJbnRMaXRlcmFsLndpdGhUeXBlKG9yaWdpbiwgdmFsdWUgPj4+IDAsIHR5cGUpOwotICAgICAg
ICAgICAgICAgIHR5cGUuc3VjY2Vzc29yVmFsdWUgPSB2YWx1ZSA9PiAodmFsdWUgKyAxKSA+Pj4g
MDsKLSAgICAgICAgICAgICAgICB0eXBlLnZhbHVlc0VxdWFsID0gKGEsIGIpID0+IGEgPT09IGI7
Ci0gICAgICAgICAgICAgICAgdHlwZS5wb3B1bGF0ZURlZmF1bHRWYWx1ZSA9IChidWZmZXIsIG9m
ZnNldCkgPT4gYnVmZmVyLnNldChvZmZzZXQsIDApOwotICAgICAgICAgICAgICAgIHR5cGUuZm9y
bWF0VmFsdWVGcm9tSW50TGl0ZXJhbCA9IHZhbHVlID0+IHZhbHVlID4+PiAwOwotICAgICAgICAg
ICAgICAgIHR5cGUuZm9ybWF0VmFsdWVGcm9tVWludExpdGVyYWwgPSB2YWx1ZSA9PiB2YWx1ZSA+
Pj4gMDsKLSAgICAgICAgICAgICAgICB0eXBlLmFsbFZhbHVlcyA9IGZ1bmN0aW9uKigpIHsgCi0g
ICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IDB4ZmZmZmZmZmY7ICsraSkK
LSAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHt2YWx1ZTogaSwgbmFtZTogaX07Ci0gICAg
ICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICB0eXBlLnBvcHVsYXRlRGVmYXVsdFZhbHVl
ID0gKGJ1ZmZlciwgb2Zmc2V0KSA9PiBidWZmZXIuc2V0KG9mZnNldCwgZmFsc2UpOwogICAgICAg
ICAgICAgfSk7CiAKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUg
dHlwZWRlZiB1Y2hhciIsCiAgICAgICAgICAgICB0eXBlID0+IHsKICAgICAgICAgICAgICAgICB0
aGlzLnVjaGFyID0gdHlwZTsKKyAgICAgICAgICAgICAgICB0eXBlLmlzUHJpbWl0aXZlID0gdHJ1
ZTsKICAgICAgICAgICAgICAgICB0eXBlLmlzSW50ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICB0
eXBlLmlzTnVtYmVyID0gdHJ1ZTsKICAgICAgICAgICAgICAgICB0eXBlLmlzU2lnbmVkID0gZmFs
c2U7CkBAIC0xMjYsMTQ5ICsxNDMsMjk1IEBAIGNsYXNzIEludHJpbnNpY3MgewogICAgICAgICAg
ICAgICAgIH07CiAgICAgICAgICAgICB9KTsKIAorCisgICAgICAgICAgICB0aGlzLl9tYXAuc2V0
KAorICAgICAgICAgICAgICJuYXRpdmUgdHlwZWRlZiB1c2hvcnQiLAorICAgICAgICAgICAgIHR5
cGUgPT4geworICAgICAgICAgICAgICAgICB0aGlzLnVzaG9ydCA9IHR5cGU7CisgICAgICAgICAg
ICAgICAgIHR5cGUuaXNQcmltaXRpdmUgPSB0cnVlOworICAgICAgICAgICAgICAgICB0eXBlLmlz
SW50ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5pc051bWJlciA9IHRydWU7CisgICAg
ICAgICAgICAgICAgIHR5cGUuaXNTaWduZWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgdHlw
ZS5jYW5SZXByZXNlbnQgPSB2YWx1ZSA9PiBpc0JpdHdpc2VFcXVpdmFsZW50KHZhbHVlICYgMHhm
ZmZmLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgIHR5cGUuc2l6ZSA9IDE7CisgICAgICAgICAg
ICAgICAgIHR5cGUuZGVmYXVsdFZhbHVlID0gMDsKKyAgICAgICAgICAgICAgICAgdHlwZS5jcmVh
dGVMaXRlcmFsID0gKG9yaWdpbiwgdmFsdWUpID0+IEludExpdGVyYWwud2l0aFR5cGUob3JpZ2lu
LCB2YWx1ZSAmIDB4ZmZmZiwgdHlwZSk7CisgICAgICAgICAgICAgICAgIHR5cGUuc3VjY2Vzc29y
VmFsdWUgPSB2YWx1ZSA9PiAodmFsdWUgKyAxKSAmIDB4ZmZmZjsKKyAgICAgICAgICAgICAgICAg
dHlwZS52YWx1ZXNFcXVhbCA9IChhLCBiKSA9PiBhID09PSBiOworICAgICAgICAgICAgICAgICB0
eXBlLnBvcHVsYXRlRGVmYXVsdFZhbHVlID0gKGJ1ZmZlciwgb2Zmc2V0KSA9PiBidWZmZXIuc2V0
KG9mZnNldCwgMCk7CisgICAgICAgICAgICAgICAgIHR5cGUuZm9ybWF0VmFsdWVGcm9tSW50TGl0
ZXJhbCA9IHZhbHVlID0+IHZhbHVlICYgMHhmZmZmOworICAgICAgICAgICAgICAgICB0eXBlLmZv
cm1hdFZhbHVlRnJvbVVpbnRMaXRlcmFsID0gdmFsdWUgPT4gdmFsdWUgJiAweGZmZmY7CisgICAg
ICAgICAgICAgICAgIHR5cGUuYWxsVmFsdWVzID0gZnVuY3Rpb24qKCkgeworICAgICAgICAgICAg
ICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gMHhmZmZmOyArK2kpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgeWllbGQge3ZhbHVlOiBpLCBuYW1lOiBpfTsKKyAgICAgICAgICAgICAgICAg
fTsKKyAgICAgICAgICAgICB9KTsKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAotICAgICAgICAg
ICAgIm5hdGl2ZSB0eXBlZGVmIGZsb2F0IiwKLSAgICAgICAgICAgIHR5cGUgPT4gewotICAgICAg
ICAgICAgICAgIHRoaXMuZmxvYXQgPSB0eXBlOwotICAgICAgICAgICAgICAgIHR5cGUuaXNQcmlt
aXRpdmUgPSB0cnVlOwotICAgICAgICAgICAgICAgIHR5cGUuc2l6ZSA9IDE7Ci0gICAgICAgICAg
ICAgICAgdHlwZS5pc0Zsb2F0aW5nID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB0eXBlLmlzTnVt
YmVyID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB0eXBlLmNhblJlcHJlc2VudCA9IHZhbHVlID0+
IGlzQml0d2lzZUVxdWl2YWxlbnQoTWF0aC5mcm91bmQodmFsdWUpLCB2YWx1ZSk7Ci0gICAgICAg
ICAgICAgICAgdHlwZS5wb3B1bGF0ZURlZmF1bHRWYWx1ZSA9IChidWZmZXIsIG9mZnNldCkgPT4g
YnVmZmVyLnNldChvZmZzZXQsIDApOwotICAgICAgICAgICAgICAgIHR5cGUuZm9ybWF0VmFsdWVG
cm9tSW50TGl0ZXJhbCA9IHZhbHVlID0+IHZhbHVlOwotICAgICAgICAgICAgICAgIHR5cGUuZm9y
bWF0VmFsdWVGcm9tVWludExpdGVyYWwgPSB2YWx1ZSA9PiB2YWx1ZTsKLSAgICAgICAgICAgICAg
ICB0eXBlLmZvcm1hdFZhbHVlRnJvbUZsb2F0TGl0ZXJhbCA9IHZhbHVlID0+IE1hdGguZnJvdW5k
KHZhbHVlKTsKLSAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICJuYXRpdmUgdHlwZWRlZiB1
aW50IiwKKyAgICAgICAgICAgICB0eXBlID0+IHsKKyAgICAgICAgICAgICAgICAgdGhpcy51aW50
ID0gdHlwZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5pc1ByaW1pdGl2ZSA9IHRydWU7CisgICAg
ICAgICAgICAgICAgIHR5cGUuaXNJbnQgPSB0cnVlOworICAgICAgICAgICAgICAgICB0eXBlLmlz
TnVtYmVyID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5pc1NpZ25lZCA9IGZhbHNlOwor
ICAgICAgICAgICAgICAgICB0eXBlLmNhblJlcHJlc2VudCA9IHZhbHVlID0+IGlzQml0d2lzZUVx
dWl2YWxlbnQodmFsdWUgPj4+IDAsIHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgdHlwZS5zaXpl
ID0gMTsKKyAgICAgICAgICAgICAgICAgdHlwZS5kZWZhdWx0VmFsdWUgPSAwOworICAgICAgICAg
ICAgICAgICB0eXBlLmNyZWF0ZUxpdGVyYWwgPSAob3JpZ2luLCB2YWx1ZSkgPT4gSW50TGl0ZXJh
bC53aXRoVHlwZShvcmlnaW4sIHZhbHVlID4+PiAwLCB0eXBlKTsKKyAgICAgICAgICAgICAgICAg
dHlwZS5zdWNjZXNzb3JWYWx1ZSA9IHZhbHVlID0+ICh2YWx1ZSArIDEpID4+PiAwOworICAgICAg
ICAgICAgICAgICB0eXBlLnZhbHVlc0VxdWFsID0gKGEsIGIpID0+IGEgPT09IGI7CisgICAgICAg
ICAgICAgICAgIHR5cGUucG9wdWxhdGVEZWZhdWx0VmFsdWUgPSAoYnVmZmVyLCBvZmZzZXQpID0+
IGJ1ZmZlci5zZXQob2Zmc2V0LCAwKTsKKyAgICAgICAgICAgICAgICAgdHlwZS5mb3JtYXRWYWx1
ZUZyb21JbnRMaXRlcmFsID0gdmFsdWUgPT4gdmFsdWUgPj4+IDA7CisgICAgICAgICAgICAgICAg
IHR5cGUuZm9ybWF0VmFsdWVGcm9tVWludExpdGVyYWwgPSB2YWx1ZSA9PiB2YWx1ZSA+Pj4gMDsK
KyAgICAgICAgICAgICAgICAgdHlwZS5hbGxWYWx1ZXMgPSBmdW5jdGlvbiooKSB7CisgICAgICAg
ICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSAweGZmZmZmZmZmOyArK2kpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgeWllbGQge3ZhbHVlOiBpLCBuYW1lOiBpfTsKKyAgICAgICAg
ICAgICAgICAgfTsKKyAgICAgICAgICAgICB9KTsKIAogICAgICAgICB0aGlzLl9tYXAuc2V0KAot
ICAgICAgICAgICAgIm5hdGl2ZSB0eXBlZGVmIGJvb2wiLAotICAgICAgICAgICAgdHlwZSA9PiB7
Ci0gICAgICAgICAgICAgICAgdGhpcy5ib29sID0gdHlwZTsKLSAgICAgICAgICAgICAgICB0eXBl
LmlzUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB0eXBlLnNpemUgPSAxOwotICAg
ICAgICAgICAgICAgIHR5cGUucG9wdWxhdGVEZWZhdWx0VmFsdWUgPSAoYnVmZmVyLCBvZmZzZXQp
ID0+IGJ1ZmZlci5zZXQob2Zmc2V0LCBmYWxzZSk7Ci0gICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgICAibmF0aXZlIHR5cGVkZWYgY2hhciIsCisgICAgICAgICAgICAgdHlwZSA9PiB7CisgICAg
ICAgICAgICAgICAgIHRoaXMuY2hhciA9IHR5cGU7CisgICAgICAgICAgICAgICAgIHR5cGUuaXNQ
cmltaXRpdmUgPSB0cnVlOworICAgICAgICAgICAgICAgICB0eXBlLmlzSW50ID0gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICAgdHlwZS5pc051bWJlciA9IHRydWU7CisgICAgICAgICAgICAgICAgIHR5
cGUuaXNTaWduZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICB0eXBlLmNhblJlcHJlc2VudCA9
IHZhbHVlID0+IGlzQml0d2lzZUVxdWl2YWxlbnQoY2FzdChJbnQ4QXJyYXksIHZhbHVlKSwgdmFs
dWUpOworICAgICAgICAgICAgICAgICB0eXBlLnNpemUgPSAxOworICAgICAgICAgICAgICAgICB0
eXBlLmRlZmF1bHRWYWx1ZSA9IDA7CisgICAgICAgICAgICAgICAgIHR5cGUuY3JlYXRlTGl0ZXJh
bCA9IChvcmlnaW4sIHZhbHVlKSA9PiBJbnRMaXRlcmFsLndpdGhUeXBlKG9yaWdpbiwgY2FzdChJ
bnQ4QXJyYXksIHZhbHVlKSwgdHlwZSk7CisgICAgICAgICAgICAgICAgIHR5cGUuc3VjY2Vzc29y
VmFsdWUgPSB2YWx1ZSA9PiBjYXN0KEludDhBcnJheSwgdmFsdWUgKyAxKTsKKyAgICAgICAgICAg
ICAgICAgdHlwZS52YWx1ZXNFcXVhbCA9IChhLCBiKSA9PiBhID09PSBiOworICAgICAgICAgICAg
ICAgICB0eXBlLnBvcHVsYXRlRGVmYXVsdFZhbHVlID0gKGJ1ZmZlciwgb2Zmc2V0KSA9PiBidWZm
ZXIuc2V0KG9mZnNldCwgMCk7CisgICAgICAgICAgICAgICAgIHR5cGUuZm9ybWF0VmFsdWVGcm9t
SW50TGl0ZXJhbCA9IHZhbHVlID0+IGNhc3QoSW50OEFycmF5LCB2YWx1ZSk7CisgICAgICAgICAg
ICAgICAgIHR5cGUuZm9ybWF0VmFsdWVGcm9tVWludExpdGVyYWwgPSB2YWx1ZSA9PiBjYXN0KElu
dDhBcnJheSwgdmFsdWUpOworICAgICAgICAgICAgICAgICB0eXBlLmFsbFZhbHVlcyA9IGZ1bmN0
aW9uKigpIHsKKyAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IDB4ZmY7
ICsraSkgeworICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGNhc3QoSW50OEFy
cmF5LCBpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCB7dmFsdWU6IHZhbHVlLCBu
YW1lOiB2YWx1ZX07CisgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgIH07
CisgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgdGhpcy5fbWFwLnNldCgKKyAgICAgICAgICAg
ICAibmF0aXZlIHR5cGVkZWYgc2hvcnQiLAorICAgICAgICAgICAgIHR5cGUgPT4geworICAgICAg
ICAgICAgICAgICB0aGlzLnNob3J0ID0gdHlwZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5pc1By
aW1pdGl2ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgIHR5cGUuaXNJbnQgPSB0cnVlOworICAg
ICAgICAgICAgICAgICB0eXBlLmlzTnVtYmVyID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgdHlw
ZS5pc1NpZ25lZCA9IHRydWU7CisgICAgICAgICAgICAgICAgIHR5cGUuY2FuUmVwcmVzZW50ID0g
dmFsdWUgPT4gaXNCaXR3aXNlRXF1aXZhbGVudChjYXN0KEludDE2QXJyYXksIHZhbHVlKSwgdmFs
dWUpOworICAgICAgICAgICAgICAgICB0eXBlLnNpemUgPSAxOworICAgICAgICAgICAgICAgICB0
eXBlLmRlZmF1bHRWYWx1ZSA9IDA7CisgICAgICAgICAgICAgICAgIHR5cGUuY3JlYXRlTGl0ZXJh
bCA9IChvcmlnaW4sIHZhbHVlKSA9PiBJbnRMaXRlcmFsLndpdGhUeXBlKG9yaWdpbiwgY2FzdChJ
bnQxNkFycmF5LCB2YWx1ZSksIHR5cGUpOworICAgICAgICAgICAgICAgICB0eXBlLnN1Y2Nlc3Nv
clZhbHVlID0gdmFsdWUgPT4gY2FzdChJbnQxNkFycmF5LCB2YWx1ZSArIDEpOworICAgICAgICAg
ICAgICAgICB0eXBlLnZhbHVlc0VxdWFsID0gKGEsIGIpID0+IGEgPT09IGI7CisgICAgICAgICAg
ICAgICAgIHR5cGUucG9wdWxhdGVEZWZhdWx0VmFsdWUgPSAoYnVmZmVyLCBvZmZzZXQpID0+IGJ1
ZmZlci5zZXQob2Zmc2V0LCAwKTsKKyAgICAgICAgICAgICAgICAgdHlwZS5mb3JtYXRWYWx1ZUZy
b21JbnRMaXRlcmFsID0gdmFsdWUgPT4gY2FzdChJbnQxNkFycmF5LCB2YWx1ZSk7CisgICAgICAg
ICAgICAgICAgIHR5cGUuZm9ybWF0VmFsdWVGcm9tVWludExpdGVyYWwgPSB2YWx1ZSA9PiBjYXN0
KEludDE2QXJyYXksIHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgdHlwZS5hbGxWYWx1ZXMgPSBm
dW5jdGlvbiooKSB7CisgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSAw
eGZmZmY7ICsraSkgeworICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGNhc3Qo
SW50MTZBcnJheSwgaSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQge3ZhbHVlOiB2
YWx1ZSwgbmFtZTogdmFsdWV9OworICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICB9OworICAgICAgICAgICAgIH0pOworCisgICAgICAgIHRoaXMuX21hcC5zZXQoCisgICAg
ICAgICAgICAgIm5hdGl2ZSB0eXBlZGVmIGludCIsCisgICAgICAgICAgICAgdHlwZSA9PiB7Cisg
ICAgICAgICAgICAgICAgIHRoaXMuaW50ID0gdHlwZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5p
c1ByaW1pdGl2ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgIHR5cGUuaXNJbnQgPSB0cnVlOwor
ICAgICAgICAgICAgICAgICB0eXBlLmlzTnVtYmVyID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAg
dHlwZS5pc1NpZ25lZCA9IHRydWU7CisgICAgICAgICAgICAgICAgIHR5cGUuY2FuUmVwcmVzZW50
ID0gdmFsdWUgPT4gaXNCaXR3aXNlRXF1aXZhbGVudCh2YWx1ZSB8IDAsIHZhbHVlKTsKKyAgICAg
ICAgICAgICAgICAgdHlwZS5zaXplID0gMTsKKyAgICAgICAgICAgICAgICAgdHlwZS5kZWZhdWx0
VmFsdWUgPSAwOworICAgICAgICAgICAgICAgICB0eXBlLmNyZWF0ZUxpdGVyYWwgPSAob3JpZ2lu
LCB2YWx1ZSkgPT4gSW50TGl0ZXJhbC53aXRoVHlwZShvcmlnaW4sIHZhbHVlIHwgMCwgdHlwZSk7
CisgICAgICAgICAgICAgICAgIHR5cGUuc3VjY2Vzc29yVmFsdWUgPSB2YWx1ZSA9PiAodmFsdWUg
KyAxKSB8IDA7CisgICAgICAgICAgICAgICAgIHR5cGUudmFsdWVzRXF1YWwgPSAoYSwgYikgPT4g
YSA9PT0gYjsKKyAgICAgICAgICAgICAgICAgdHlwZS5wb3B1bGF0ZURlZmF1bHRWYWx1ZSA9IChi
dWZmZXIsIG9mZnNldCkgPT4gYnVmZmVyLnNldChvZmZzZXQsIDApOworICAgICAgICAgICAgICAg
ICB0eXBlLmZvcm1hdFZhbHVlRnJvbUludExpdGVyYWwgPSB2YWx1ZSA9PiB2YWx1ZSB8IDA7Cisg
ICAgICAgICAgICAgICAgIHR5cGUuZm9ybWF0VmFsdWVGcm9tVWludExpdGVyYWwgPSB2YWx1ZSA9
PiB2YWx1ZSB8IDA7CisgICAgICAgICAgICAgICAgIHR5cGUuYWxsVmFsdWVzID0gZnVuY3Rpb24q
KCkgeworICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gMHhmZmZmZmZm
ZjsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gaSB8IDA7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQge3ZhbHVlOiB2YWx1ZSwgbmFtZTogdmFsdWV9
OworICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICB9OworICAgICAgICAg
ICAgIH0pOworCisgICAgICAgICB0aGlzLl9tYXAuc2V0KAorICAgICAgICAgICAgICJuYXRpdmUg
dHlwZWRlZiBoYWxmIiwKKyAgICAgICAgICAgICB0eXBlID0+IHsKKyAgICAgICAgICAgICAgICAg
dGhpcy5oYWxmID0gdHlwZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5pc1ByaW1pdGl2ZSA9IHRy
dWU7CisgICAgICAgICAgICAgICAgIHR5cGUuc2l6ZSA9IDE7CisgICAgICAgICAgICAgICAgIHR5
cGUuaXNGbG9hdGluZyA9IHRydWU7CisgICAgICAgICAgICAgICAgIHR5cGUuaXNOdW1iZXIgPSB0
cnVlOworICAgICAgICAgICAgICAgICB0eXBlLmNhblJlcHJlc2VudCA9IHZhbHVlID0+IGlzQml0
d2lzZUVxdWl2YWxlbnQoY2FzdFRvSGFsZih2YWx1ZSksIHZhbHVlKTsKKyAgICAgICAgICAgICAg
ICAgdHlwZS5wb3B1bGF0ZURlZmF1bHRWYWx1ZSA9IChidWZmZXIsIG9mZnNldCkgPT4gYnVmZmVy
LnNldChvZmZzZXQsIDApOworICAgICAgICAgICAgICAgICB0eXBlLmZvcm1hdFZhbHVlRnJvbUlu
dExpdGVyYWwgPSB2YWx1ZSA9PiB2YWx1ZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5mb3JtYXRW
YWx1ZUZyb21VaW50TGl0ZXJhbCA9IHZhbHVlID0+IHZhbHVlOworICAgICAgICAgICAgICAgICB0
eXBlLmZvcm1hdFZhbHVlRnJvbUZsb2F0TGl0ZXJhbCA9IHZhbHVlID0+IGNhc3RUb0hhbGYodmFs
dWUpOworICAgICAgICAgICAgIH0pOworCisgICAgICAgICB0aGlzLl9tYXAuc2V0KAorICAgICAg
ICAgICAgICJuYXRpdmUgdHlwZWRlZiBmbG9hdCIsCisgICAgICAgICAgICAgdHlwZSA9PiB7Cisg
ICAgICAgICAgICAgICAgIHRoaXMuZmxvYXQgPSB0eXBlOworICAgICAgICAgICAgICAgICB0eXBl
LmlzUHJpbWl0aXZlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5zaXplID0gMTsKKyAg
ICAgICAgICAgICAgICAgdHlwZS5pc0Zsb2F0aW5nID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAg
dHlwZS5pc051bWJlciA9IHRydWU7CisgICAgICAgICAgICAgICAgIHR5cGUuY2FuUmVwcmVzZW50
ID0gdmFsdWUgPT4gaXNCaXR3aXNlRXF1aXZhbGVudChNYXRoLmZyb3VuZCh2YWx1ZSksIHZhbHVl
KTsKKyAgICAgICAgICAgICAgICAgdHlwZS5wb3B1bGF0ZURlZmF1bHRWYWx1ZSA9IChidWZmZXIs
IG9mZnNldCkgPT4gYnVmZmVyLnNldChvZmZzZXQsIDApOworICAgICAgICAgICAgICAgICB0eXBl
LmZvcm1hdFZhbHVlRnJvbUludExpdGVyYWwgPSB2YWx1ZSA9PiB2YWx1ZTsKKyAgICAgICAgICAg
ICAgICAgdHlwZS5mb3JtYXRWYWx1ZUZyb21VaW50TGl0ZXJhbCA9IHZhbHVlID0+IHZhbHVlOwor
ICAgICAgICAgICAgICAgICB0eXBlLmZvcm1hdFZhbHVlRnJvbUZsb2F0TGl0ZXJhbCA9IHZhbHVl
ID0+IE1hdGguZnJvdW5kKHZhbHVlKTsKKyAgICAgICAgICAgICB9KTsKKworICAgICAgICB0aGlz
Ll9tYXAuc2V0KAorICAgICAgICAgICAgICJuYXRpdmUgdHlwZWRlZiBhdG9taWNfaW50IiwKKyAg
ICAgICAgICAgICB0eXBlID0+IHsKKyAgICAgICAgICAgICAgICAgdGhpcy5hdG9taWNfaW50ID0g
dHlwZTsKKyAgICAgICAgICAgICAgICAgLy8gRklYTUU6IEZpZ3VyZSBvdXQgd2hhdCB0byBwdXQg
aGVyZS4KKyAgICAgICAgICAgICB9KTsKKworICAgICAgICB0aGlzLl9tYXAuc2V0KAorICAgICAg
ICAgICAgICJuYXRpdmUgdHlwZWRlZiBhdG9taWNfdWludCIsCisgICAgICAgICAgICAgdHlwZSA9
PiB7CisgICAgICAgICAgICAgICAgIHRoaXMuYXRvbWljX3VpbnQgPSB0eXBlOworICAgICAgICAg
ICAgICAgICAvLyBGSVhNRTogRmlndXJlIG91dCB3aGF0IHRvIHB1dCBoZXJlLgorICAgICAgICAg
ICAgIH0pOwogCiAgICAgICAgIGZvciAobGV0IHZlY3RvclR5cGUgb2YgVmVjdG9yRWxlbWVudFR5
cGVzKSB7Ci0gICAgICAgICAgICBmb3IgKGxldCB2ZWN0b3JTaXplIG9mIFZlY3RvckVsZW1lbnRT
aXplcykKLSAgICAgICAgICAgICAgICB0aGlzLl9tYXAuc2V0KGBuYXRpdmUgdHlwZWRlZiB2ZWN0
b3I8JHt2ZWN0b3JUeXBlfSwgJHt2ZWN0b3JTaXplfT5gLCB0eXBlID0+IHt9KTsKKyAgICAgICAg
ICAgIGZvciAobGV0IHZlY3RvclNpemUgb2YgVmVjdG9yRWxlbWVudFNpemVzKSB7CisgICAgICAg
ICAgICAgICAgdGhpcy5fbWFwLnNldChgbmF0aXZlIHR5cGVkZWYgdmVjdG9yPCR7dmVjdG9yVHlw
ZX0sICR7dmVjdG9yU2l6ZX0+YCwgdHlwZSA9PiB7CisgICAgICAgICAgICAgICAgICAgIHRoaXNb
YCR7dmVjdG9yVHlwZX0ke3ZlY3RvclNpemV9YF0gPSB0eXBlOworICAgICAgICAgICAgICAgICAg
ICAvLyBGSVhNRTogRmlndXJlIG91dCB3aGF0IHRvIHB1dCBoZXJlLgorICAgICAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMu
X21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIG9wZXJhdG9yIGludCh1aW50KSIsCiAgICAg
ICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0g
KFt2YWx1ZV0pID0+IEVQdHIuYm94KHZhbHVlLmxvYWRWYWx1ZSgpIHwgMCk7CiAgICAgICAgICAg
ICB9KTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJu
YXRpdmUgb3BlcmF0b3IgaW50KHVjaGFyKSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAg
ICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFt2YWx1ZV0pID0+IEVQdHIuYm94KHZh
bHVlLmxvYWRWYWx1ZSgpIHwgMCk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgCisKICAgICAg
ICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUgb3BlcmF0b3IgaW50KGZsb2F0
KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVu
dGF0aW9uID0gKFt2YWx1ZV0pID0+IEVQdHIuYm94KHZhbHVlLmxvYWRWYWx1ZSgpIHwgMCk7CiAg
ICAgICAgICAgICB9KTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAg
ICAgICAgICJuYXRpdmUgb3BlcmF0b3IgdWludChpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4g
ewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW3ZhbHVlXSkgPT4gRVB0
ci5ib3godmFsdWUubG9hZFZhbHVlKCkgPj4+IDApOwogICAgICAgICAgICAgfSk7Ci0gICAgICAg
IAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIG9wZXJhdG9y
IHVpbnQodWNoYXIpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1
bmMuaW1wbGVtZW50YXRpb24gPSAoW3ZhbHVlXSkgPT4gRVB0ci5ib3godmFsdWUubG9hZFZhbHVl
KCkgPj4+IDApOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21h
cC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIG9wZXJhdG9yIHVpbnQoZmxvYXQpIiwKICAgICAg
ICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAo
W3ZhbHVlXSkgPT4gRVB0ci5ib3godmFsdWUubG9hZFZhbHVlKCkgPj4+IDApOwogICAgICAgICAg
ICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAi
bmF0aXZlIG9wZXJhdG9yIHVjaGFyKGludCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAg
ICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbdmFsdWVdKSA9PiBFUHRyLmJveCh2
YWx1ZS5sb2FkVmFsdWUoKSAmIDB4ZmYpOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAg
ICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIG9wZXJhdG9yIHVjaGFy
KHVpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1w
bGVtZW50YXRpb24gPSAoW3ZhbHVlXSkgPT4gRVB0ci5ib3godmFsdWUubG9hZFZhbHVlKCkgJiAw
eGZmKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0
KAogICAgICAgICAgICAgIm5hdGl2ZSBvcGVyYXRvciB1Y2hhcihmbG9hdCkiLAogICAgICAgICAg
ICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbdmFs
dWVdKSA9PiBFUHRyLmJveCh2YWx1ZS5sb2FkVmFsdWUoKSAmIDB4ZmYpOwogICAgICAgICAgICAg
fSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0
aXZlIG9wZXJhdG9yIGZsb2F0KGludCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAg
ICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbdmFsdWVdKSA9PiBFUHRyLmJveChNYXRo
LmZyb3VuZCh2YWx1ZS5sb2FkVmFsdWUoKSkpOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAor
CiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIG9wZXJhdG9yIGZs
b2F0KHVpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMu
aW1wbGVtZW50YXRpb24gPSAoW3ZhbHVlXSkgPT4gRVB0ci5ib3goTWF0aC5mcm91bmQodmFsdWUu
bG9hZFZhbHVlKCkpKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlz
Ll9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBvcGVyYXRvciBmbG9hdCh1Y2hhcikiLAog
ICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlv
biA9IChbdmFsdWVdKSA9PiBFUHRyLmJveChNYXRoLmZyb3VuZCh2YWx1ZS5sb2FkVmFsdWUoKSkp
OwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAg
ICAgICAgICAgICAibmF0aXZlIGludCBvcGVyYXRvcisoaW50LGludCkiLAogICAgICAgICAgICAg
ZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwg
cmlnaHRdKSA9PgogICAgICAgICAgICAgICAgICAgICBFUHRyLmJveCgobGVmdC5sb2FkVmFsdWUo
KSArIHJpZ2h0LmxvYWRWYWx1ZSgpKSB8IDApOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAor
CiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIHVpbnQgb3BlcmF0
b3IrKHVpbnQsdWludCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAg
ZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PgogICAgICAgICAgICAgICAg
ICAgICBFUHRyLmJveCgobGVmdC5sb2FkVmFsdWUoKSArIHJpZ2h0LmxvYWRWYWx1ZSgpKSA+Pj4g
MCk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgK
ICAgICAgICAgICAgICJuYXRpdmUgZmxvYXQgb3BlcmF0b3IrKGZsb2F0LGZsb2F0KSIsCiAgICAg
ICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0g
KFtsZWZ0LCByaWdodF0pID0+CiAgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KE1hdGguZnJv
dW5kKGxlZnQubG9hZFZhbHVlKCkgKyByaWdodC5sb2FkVmFsdWUoKSkpOwogICAgICAgICAgICAg
fSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0
aXZlIGludCBvcGVyYXRvci0oaW50LGludCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAg
ICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PgogICAg
ICAgICAgICAgICAgICAgICBFUHRyLmJveCgobGVmdC5sb2FkVmFsdWUoKSAtIHJpZ2h0LmxvYWRW
YWx1ZSgpKSB8IDApOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMu
X21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIHVpbnQgb3BlcmF0b3ItKHVpbnQsdWludCki
LAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRh
dGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PgogICAgICAgICAgICAgICAgICAgICBFUHRyLmJveCgo
bGVmdC5sb2FkVmFsdWUoKSAtIHJpZ2h0LmxvYWRWYWx1ZSgpKSA+Pj4gMCk7CiAgICAgICAgICAg
ICB9KTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJu
YXRpdmUgZmxvYXQgb3BlcmF0b3ItKGZsb2F0LGZsb2F0KSIsCiAgICAgICAgICAgICBmdW5jID0+
IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0p
ID0+CiAgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KE1hdGguZnJvdW5kKGxlZnQubG9hZFZh
bHVlKCkgLSByaWdodC5sb2FkVmFsdWUoKSkpOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAor
CiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIGludCBvcGVyYXRv
ciooaW50LGludCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CkBAIC0yNzYsMjI5ICs0MzksMjI5
IEBAIGNsYXNzIEludHJpbnNpY3MgewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gRVB0ci5i
b3goKGxlZnQubG9hZFZhbHVlKCkgKiByaWdodC5sb2FkVmFsdWUoKSkgfCAwKTsKICAgICAgICAg
ICAgICAgICB9OwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21h
cC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIHVpbnQgb3BlcmF0b3IqKHVpbnQsdWludCkiLAog
ICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlv
biA9IChbbGVmdCwgcmlnaHRdKSA9PgogICAgICAgICAgICAgICAgICAgICBFUHRyLmJveCgobGVm
dC5sb2FkVmFsdWUoKSAqIHJpZ2h0LmxvYWRWYWx1ZSgpKSA+Pj4gMCk7CiAgICAgICAgICAgICB9
KTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRp
dmUgZmxvYXQgb3BlcmF0b3IqKGZsb2F0LGZsb2F0KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsK
ICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+
CiAgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KE1hdGguZnJvdW5kKGxlZnQubG9hZFZhbHVl
KCkgKiByaWdodC5sb2FkVmFsdWUoKSkpOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAg
ICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIGludCBvcGVyYXRvci8o
aW50LGludCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5p
bXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PgogICAgICAgICAgICAgICAgICAgICBF
UHRyLmJveCgobGVmdC5sb2FkVmFsdWUoKSAvIHJpZ2h0LmxvYWRWYWx1ZSgpKSB8IDApOwogICAg
ICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAg
ICAgICAibmF0aXZlIHVpbnQgb3BlcmF0b3IvKHVpbnQsdWludCkiLAogICAgICAgICAgICAgZnVu
YyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmln
aHRdKSA9PgogICAgICAgICAgICAgICAgICAgICBFUHRyLmJveCgobGVmdC5sb2FkVmFsdWUoKSAv
IHJpZ2h0LmxvYWRWYWx1ZSgpKSA+Pj4gMCk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgCisK
ICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUgaW50IG9wZXJhdG9y
JihpbnQsaW50KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5j
LmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+CiAgICAgICAgICAgICAgICAgICAg
IEVQdHIuYm94KGxlZnQubG9hZFZhbHVlKCkgJiByaWdodC5sb2FkVmFsdWUoKSk7CiAgICAgICAg
ICAgICB9KTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAg
ICJuYXRpdmUgdWludCBvcGVyYXRvciYodWludCx1aW50KSIsCiAgICAgICAgICAgICBmdW5jID0+
IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0p
ID0+CiAgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KChsZWZ0LmxvYWRWYWx1ZSgpICYgcmln
aHQubG9hZFZhbHVlKCkpID4+PiAwKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAg
ICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBpbnQgb3BlcmF0b3J8KGlu
dCxpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1w
bGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0
ci5ib3gobGVmdC5sb2FkVmFsdWUoKSB8IHJpZ2h0LmxvYWRWYWx1ZSgpKTsKICAgICAgICAgICAg
IH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5h
dGl2ZSB1aW50IG9wZXJhdG9yfCh1aW50LHVpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewog
ICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4K
ICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3goKGxlZnQubG9hZFZhbHVlKCkgfCByaWdodC5s
b2FkVmFsdWUoKSkgPj4+IDApOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAg
IHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIGludCBvcGVyYXRvcl4oaW50LGlu
dCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1l
bnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PgogICAgICAgICAgICAgICAgICAgICBFUHRyLmJv
eChsZWZ0LmxvYWRWYWx1ZSgpIF4gcmlnaHQubG9hZFZhbHVlKCkpOwogICAgICAgICAgICAgfSk7
Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZl
IHVpbnQgb3BlcmF0b3JeKHVpbnQsdWludCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAg
ICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PgogICAg
ICAgICAgICAgICAgICAgICBFUHRyLmJveCgobGVmdC5sb2FkVmFsdWUoKSBeIHJpZ2h0LmxvYWRW
YWx1ZSgpKSA+Pj4gMCk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgCisKICAgICAgICAgdGhp
cy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUgaW50IG9wZXJhdG9yPDwoaW50LHVpbnQp
IiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50
YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3go
bGVmdC5sb2FkVmFsdWUoKSA8PCByaWdodC5sb2FkVmFsdWUoKSk7CiAgICAgICAgICAgICB9KTsK
LSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUg
dWludCBvcGVyYXRvcjw8KHVpbnQsdWludCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAg
ICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PgogICAg
ICAgICAgICAgICAgICAgICBFUHRyLmJveCgobGVmdC5sb2FkVmFsdWUoKSA8PCByaWdodC5sb2Fk
VmFsdWUoKSkgPj4+IDApOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRo
aXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIGludCBvcGVyYXRvcj4+KGludCx1aW50
KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVu
dGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+CiAgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94
KGxlZnQubG9hZFZhbHVlKCkgPj4gcmlnaHQubG9hZFZhbHVlKCkpOwogICAgICAgICAgICAgfSk7
Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZl
IHVpbnQgb3BlcmF0b3I+Pih1aW50LHVpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAg
ICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAg
ICAgICAgICAgICAgICAgICAgRVB0ci5ib3gobGVmdC5sb2FkVmFsdWUoKSA+Pj4gcmlnaHQubG9h
ZFZhbHVlKCkpOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21h
cC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIGludCBvcGVyYXRvcn4oaW50KSIsCiAgICAgICAg
ICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFt2
YWx1ZV0pID0+IEVQdHIuYm94KH52YWx1ZS5sb2FkVmFsdWUoKSk7CiAgICAgICAgICAgICB9KTsK
LSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUg
dWludCBvcGVyYXRvcn4odWludCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAg
ICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbdmFsdWVdKSA9PiBFUHRyLmJveCgofnZhbHVl
LmxvYWRWYWx1ZSgpKSA+Pj4gMCk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgCisKICAgICAg
ICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUgZmxvYXQgb3BlcmF0b3IvKGZs
b2F0LGZsb2F0KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5j
LmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+CiAgICAgICAgICAgICAgICAgICAg
IEVQdHIuYm94KE1hdGguZnJvdW5kKGxlZnQubG9hZFZhbHVlKCkgLyByaWdodC5sb2FkVmFsdWUo
KSkpOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQo
CiAgICAgICAgICAgICAibmF0aXZlIGJvb2wgb3BlcmF0b3I9PShpbnQsaW50KSIsCiAgICAgICAg
ICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFts
ZWZ0LCByaWdodF0pID0+CiAgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KGxlZnQubG9hZFZh
bHVlKCkgPT0gcmlnaHQubG9hZFZhbHVlKCkpOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAor
CiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIGJvb2wgb3BlcmF0
b3I9PSh1aW50LHVpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAg
IGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAg
ICAgICAgRVB0ci5ib3gobGVmdC5sb2FkVmFsdWUoKSA9PSByaWdodC5sb2FkVmFsdWUoKSk7CiAg
ICAgICAgICAgICB9KTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAg
ICAgICAgICJuYXRpdmUgYm9vbCBvcGVyYXRvcj09KGJvb2wsYm9vbCkiLAogICAgICAgICAgICAg
ZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwg
cmlnaHRdKSA9PgogICAgICAgICAgICAgICAgICAgICBFUHRyLmJveChsZWZ0LmxvYWRWYWx1ZSgp
ID09IHJpZ2h0LmxvYWRWYWx1ZSgpKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAg
ICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBib29sIG9wZXJhdG9yPT0o
ZmxvYXQsZmxvYXQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1
bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAgICAg
ICAgRVB0ci5ib3gobGVmdC5sb2FkVmFsdWUoKSA9PSByaWdodC5sb2FkVmFsdWUoKSk7CiAgICAg
ICAgICAgICB9KTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAg
ICAgICJuYXRpdmUgYm9vbCBvcGVyYXRvcjwoaW50LGludCkiLAogICAgICAgICAgICAgZnVuYyA9
PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRd
KSA9PgogICAgICAgICAgICAgICAgICAgICBFUHRyLmJveChsZWZ0LmxvYWRWYWx1ZSgpIDwgcmln
aHQubG9hZFZhbHVlKCkpOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRo
aXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIGJvb2wgb3BlcmF0b3I8KHVpbnQsdWlu
dCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1l
bnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PgogICAgICAgICAgICAgICAgICAgICBFUHRyLmJv
eChsZWZ0LmxvYWRWYWx1ZSgpIDwgcmlnaHQubG9hZFZhbHVlKCkpOwogICAgICAgICAgICAgfSk7
Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZl
IGJvb2wgb3BlcmF0b3I8KGZsb2F0LGZsb2F0KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAg
ICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+CiAg
ICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KGxlZnQubG9hZFZhbHVlKCkgPCByaWdodC5sb2Fk
VmFsdWUoKSk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFw
LnNldCgKICAgICAgICAgICAgICJuYXRpdmUgYm9vbCBvcGVyYXRvcjw9KGludCxpbnQpIiwKICAg
ICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24g
PSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3gobGVmdC5s
b2FkVmFsdWUoKSA8PSByaWdodC5sb2FkVmFsdWUoKSk7CiAgICAgICAgICAgICB9KTsKLSAgICAg
ICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUgYm9vbCBv
cGVyYXRvcjw9KHVpbnQsdWludCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAg
ICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PgogICAgICAgICAg
ICAgICAgICAgICBFUHRyLmJveChsZWZ0LmxvYWRWYWx1ZSgpIDw9IHJpZ2h0LmxvYWRWYWx1ZSgp
KTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAog
ICAgICAgICAgICAgIm5hdGl2ZSBib29sIG9wZXJhdG9yPD0oZmxvYXQsZmxvYXQpIiwKICAgICAg
ICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAo
W2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3gobGVmdC5sb2Fk
VmFsdWUoKSA8PSByaWdodC5sb2FkVmFsdWUoKSk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAg
CisKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUgYm9vbCBvcGVy
YXRvcj4oaW50LGludCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAg
ZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PgogICAgICAgICAgICAgICAg
ICAgICBFUHRyLmJveChsZWZ0LmxvYWRWYWx1ZSgpID4gcmlnaHQubG9hZFZhbHVlKCkpOwogICAg
ICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAg
ICAgICAibmF0aXZlIGJvb2wgb3BlcmF0b3I+KHVpbnQsdWludCkiLAogICAgICAgICAgICAgZnVu
YyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmln
aHRdKSA9PgogICAgICAgICAgICAgICAgICAgICBFUHRyLmJveChsZWZ0LmxvYWRWYWx1ZSgpID4g
cmlnaHQubG9hZFZhbHVlKCkpOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAg
IHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIGJvb2wgb3BlcmF0b3I+KGZsb2F0
LGZsb2F0KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmlt
cGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+CiAgICAgICAgICAgICAgICAgICAgIEVQ
dHIuYm94KGxlZnQubG9hZFZhbHVlKCkgPiByaWdodC5sb2FkVmFsdWUoKSk7CiAgICAgICAgICAg
ICB9KTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJu
YXRpdmUgYm9vbCBvcGVyYXRvcj49KGludCxpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewog
ICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4K
ICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3gobGVmdC5sb2FkVmFsdWUoKSA+PSByaWdodC5s
b2FkVmFsdWUoKSk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5f
bWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUgYm9vbCBvcGVyYXRvcj49KHVpbnQsdWludCki
LAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRh
dGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PgogICAgICAgICAgICAgICAgICAgICBFUHRyLmJveChs
ZWZ0LmxvYWRWYWx1ZSgpID49IHJpZ2h0LmxvYWRWYWx1ZSgpKTsKICAgICAgICAgICAgIH0pOwot
ICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBi
b29sIG9wZXJhdG9yPj0oZmxvYXQsZmxvYXQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewpAQCAt
NTM4LDcgKzcwMSw3IEBAIGNsYXNzIEludHJpbnNpY3MgewogICAgICAgICBmb3IgKGxldCBzZXR0
ZXIgb2YgQnVpbHRpblZlY3RvclNldHRlci5mdW5jdGlvbnMoKSkKICAgICAgICAgICAgIHRoaXMu
X21hcC5zZXQoc2V0dGVyLnRvU3RyaW5nKCksIGZ1bmMgPT4gc2V0dGVyLmluc3RhbnRpYXRlSW1w
bGVtZW50YXRpb24oZnVuYykpOwogICAgIH0KLSAgICAKKwogICAgIGFkZCh0aGluZykKICAgICB7
CiAgICAgICAgIGxldCBpbnRyaW5zaWMgPSB0aGlzLl9tYXAuZ2V0KHRoaW5nLnRvU3RyaW5nKCkp
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmF0aXZlVHlwZS5q
cyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05hdGl2ZVR5cGUuanMKaW5kZXggZTJk
ODUxY2JjY2JhM2E5NzIzNGM3YmQzOTI5MDc4MjljYTllMDVmMi4uMjM4MWI1YTZiMGIwMTBlMGZk
ZDRkYzUzNTUwYThlYTZiNGY4MzQ3YiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvTmF0aXZlVHlwZS5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9OYXRpdmVUeXBlLmpzCkBAIC0yNSwxMSArMjUsMTQgQEAKICJ1c2Ugc3RyaWN0IjsKIAogY2xh
c3MgTmF0aXZlVHlwZSBleHRlbmRzIFR5cGUgewotICAgIGNvbnN0cnVjdG9yKG9yaWdpbiwgbmFt
ZSkKKyAgICBjb25zdHJ1Y3RvcihvcmlnaW4sIG5hbWUsIHR5cGVBcmd1bWVudHMpCiAgICAgewor
ICAgICAgICBpZiAoISh0eXBlQXJndW1lbnRzIGluc3RhbmNlb2YgQXJyYXkpKQorICAgICAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJ0eXBlIHBhcmFtZXRlcnMgbm90IGFycmF5OiAiICsgdHlwZUFy
Z3VtZW50cyk7CiAgICAgICAgIHN1cGVyKCk7CiAgICAgICAgIHRoaXMuX29yaWdpbiA9IG9yaWdp
bjsKICAgICAgICAgdGhpcy5fbmFtZSA9IG5hbWU7CisgICAgICAgIHRoaXMuX3R5cGVBcmd1bWVu
dHMgPSB0eXBlQXJndW1lbnRzOwogICAgICAgICB0aGlzLl9pc051bWJlciA9IGZhbHNlOwogICAg
ICAgICB0aGlzLl9pc0ludCA9IGZhbHNlOwogICAgICAgICB0aGlzLl9pc0Zsb2F0aW5nID0gZmFs
c2U7CkBAIC0zOCw2ICs0MSw3IEBAIGNsYXNzIE5hdGl2ZVR5cGUgZXh0ZW5kcyBUeXBlIHsKICAg
ICAKICAgICBnZXQgb3JpZ2luKCkgeyByZXR1cm4gdGhpcy5fb3JpZ2luOyB9CiAgICAgZ2V0IG5h
bWUoKSB7IHJldHVybiB0aGlzLl9uYW1lOyB9CisgICAgZ2V0IHR5cGVBcmd1bWVudHMoKSB7IHJl
dHVybiB0aGlzLl90eXBlQXJndW1lbnRzOyB9CiAgICAgZ2V0IGlzTmF0aXZlKCkgeyByZXR1cm4g
dHJ1ZTsgfQogICAgIAogICAgIC8vIFdlIGxldCBJbnRyaW5zaWNzLmpzIHNldCB0aGVzZSBhcyBp
dCBsaWtlcy4KQEAgLTUyLDE5ICs1NiwxOCBAQCBjbGFzcyBOYXRpdmVUeXBlIGV4dGVuZHMgVHlw
ZSB7CiAgICAgCiAgICAgdG9TdHJpbmcoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGBuYXRpdmUg
dHlwZWRlZiAke3RoaXMubmFtZX1gOworICAgICAgICBsZXQgcmVzdWx0ID0gYG5hdGl2ZSB0eXBl
ZGVmICR7dGhpcy5uYW1lfWA7CisgICAgICAgIGlmICh0aGlzLnR5cGVBcmd1bWVudHMubGVuZ3Ro
KQorICAgICAgICAgICAgcmVzdWx0ICs9ICI8IiArIHRoaXMudHlwZUFyZ3VtZW50cy5qb2luKCIs
IikgKyAiPiI7CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAogICAgIHN0YXRp
YyBjcmVhdGUob3JpZ2luLCBuYW1lLCB0eXBlQXJndW1lbnRzKQogICAgIHsKLSAgICAgICAgLy8g
RklYTUU6IEZvciBuYXRpdmUgdHlwZXMgbGlrZSBUZXh0dXJlMUQgdGhpcyBzaG91bGQgcmVzb2x2
ZSB0aGUgdHlwZSB0byBzb21ldGhpbmcgY29uY3JldGUgYnkgY2hhbmdpbmcgdGhlIHR5cGUgbmFt
ZS4KLSAgICAgICAgaWYgKHR5cGVBcmd1bWVudHMubGVuZ3RoKQotICAgICAgICAgICAgdGhyb3cg
bmV3IFdUeXBlRXJyb3Iob3JpZ2luLm9yaWdpblN0cmluZywgYCR7bmFtZX08JHt0eXBlQXJndW1l
bnRzLmpvaW4oIiwiKX0+OiBTdXBwb3J0IGZvciBuYXRpdmUgdHlwZXMgd2l0aCB0eXBlIGFyZ3Vt
ZW50cyBpcyBjdXJyZW50bHkgdW5pbXBsZW1lbnRlZC5gKTsKKyAgICAgICAgaWYgKG5hbWUgPT0g
InZlY3RvciIpCisgICAgICAgICAgICByZXR1cm4gbmV3IFZlY3RvclR5cGUob3JpZ2luLCBuYW1l
LCB0eXBlQXJndW1lbnRzKTsKIAotICAgICAgICBpZiAoYWxsVmVjdG9yVHlwZU5hbWVzKCkuaW5k
ZXhPZihuYW1lKSA+IC0xKQotICAgICAgICAgICAgcmV0dXJuIG5ldyBWZWN0b3JUeXBlKG9yaWdp
biwgbmFtZSk7Ci0KLSAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVUeXBlKG9yaWdpbiwgbmFtZSk7
CisgICAgICAgIHJldHVybiBuZXcgTmF0aXZlVHlwZShvcmlnaW4sIG5hbWUsIHR5cGVBcmd1bWVu
dHMpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvUGFyc2UuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QYXJzZS5qcwppbmRl
eCBjNGFlOWRlN2ZkZTg1NjI5NjkyNjBjMTQ2OWMyMmI1ODZkZTc2ZGY5Li5jNmQ1ZmM0ODQzYTE2
MzgxOGQ3MWY1NDUwZTMwODJhMTE3NWViOWY4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9QYXJzZS5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9QYXJzZS5qcwpAQCAtMzI3LDEwICszMjcsMTIgQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwg
b3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQogICAgIGZ1bmN0aW9u
IGlzQ2FsbEV4cHJlc3Npb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIGxleGVyLnRlc3RTY29w
ZSgoKSA9PiB7Ci0gICAgICAgICAgICBjb25zdW1lS2luZCgiaWRlbnRpZmllciIpOwotICAgICAg
ICAgICAgcGFyc2VUeXBlQXJndW1lbnRzKCk7Ci0gICAgICAgICAgICBjb25zdW1lKCIoIik7Ci0g
ICAgICAgIH0pOworICAgICAgICAgICAgICAgIGNvbnN1bWVLaW5kKCJpZGVudGlmaWVyIik7Cisg
ICAgICAgICAgICAgICAgY29uc3VtZSgiKCIpOworICAgICAgICAgICAgfSkgfHwgbGV4ZXIudGVz
dFNjb3BlKCgpID0+IHsKKyAgICAgICAgICAgICAgICBwYXJzZVR5cGUoKTsKKyAgICAgICAgICAg
ICAgICBjb25zdW1lKCIoIik7CisgICAgICAgICAgICB9KTsKICAgICB9CiAgICAgCiAgICAgZnVu
Y3Rpb24gZW1pdEluY3JlbWVudCh0b2tlbiwgb2xkLCBleHRyYUFyZykKQEAgLTg4MywxMCArODg1
LDIwIEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwgbGluZU51
bWJlck9mZnNldCwgdGV4dCkKICAgICB7CiAgICAgICAgIGxldCBvcmlnaW4gPSBjb25zdW1lKCJu
YXRpdmUiKTsKICAgICAgICAgaWYgKHRyeUNvbnN1bWUoInR5cGVkZWYiKSkgeworICAgICAgICAg
ICAgbGV0IG5hdGl2ZVR5cGUgPSBsZXhlci5iYWNrdHJhY2tpbmdTY29wZSgoKSA9PiB7CisgICAg
ICAgICAgICAgICAgbGV0IG5hbWUgPSBjb25zdW1lS2luZCgiaWRlbnRpZmllciIpOworICAgICAg
ICAgICAgICAgIGxldCBhcmdzID0gcGFyc2VUeXBlQXJndW1lbnRzKCk7CisgICAgICAgICAgICAg
ICAgY29uc3VtZSgiOyIpOworICAgICAgICAgICAgICAgIHJldHVybiBOYXRpdmVUeXBlLmNyZWF0
ZShvcmlnaW4sIG5hbWUudGV4dCwgYXJncykKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
aWYgKG5hdGl2ZVR5cGUpCisgICAgICAgICAgICAgICAgcmV0dXJuIG5hdGl2ZVR5cGU7CisKICAg
ICAgICAgICAgIGxldCBuYW1lID0gY29uc3VtZUtpbmQoImlkZW50aWZpZXIiKTsKLSAgICAgICAg
ICAgIGxldCBhcmdzID0gcGFyc2VUeXBlQXJndW1lbnRzKCk7CisgICAgICAgICAgICBjb25zdW1l
KCI9Iik7CisgICAgICAgICAgICBsZXQgdHlwZSA9IHBhcnNlVHlwZSgpOwogICAgICAgICAgICAg
Y29uc3VtZSgiOyIpOwotICAgICAgICAgICAgcmV0dXJuIE5hdGl2ZVR5cGUuY3JlYXRlKG9yaWdp
biwgbmFtZS50ZXh0LCBhcmdzKTsKKyAgICAgICAgICAgIHJldHVybiBuZXcgTmF0aXZlVHlwZURl
ZihvcmlnaW4sIG5hbWUsIHR5cGUpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBwYXJzZU5h
dGl2ZUZ1bmMoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9TdGFuZGFyZExpYnJhcnkuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9T
dGFuZGFyZExpYnJhcnkuanMKaW5kZXggMDZiMjUxY2YwYTI0ODE5Y2FiNTA2NWVmNTQ0NWUxNDg5
ZDVlYWFmYy4uOWQxYzY2NmRjMTQ0NzA2ZDlkMTUwODRjYzRkYzM2NmEyNjQ3MjM5YiAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhbmRhcmRMaWJyYXJ5LmpzCisr
KyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0YW5kYXJkTGlicmFyeS5qcwpAQCAt
MzMsMTcgKzMzLDcwIEBAIGxldCBzdGFuZGFyZExpYnJhcnkgPSBgCiBuYXRpdmUgdHlwZWRlZiB2
b2lkOwogbmF0aXZlIHR5cGVkZWYgYm9vbDsKIG5hdGl2ZSB0eXBlZGVmIHVjaGFyOworbmF0aXZl
IHR5cGVkZWYgdXNob3J0OwogbmF0aXZlIHR5cGVkZWYgdWludDsKK25hdGl2ZSB0eXBlZGVmIGNo
YXI7CituYXRpdmUgdHlwZWRlZiBzaG9ydDsKIG5hdGl2ZSB0eXBlZGVmIGludDsKK25hdGl2ZSB0
eXBlZGVmIGhhbGY7CiBuYXRpdmUgdHlwZWRlZiBmbG9hdDsKLQotLy8gRklYTUU6IEFkZCBzdXBw
b3J0IGZvciB0aGVzZSB0eXBlcyB0byBJbnRyaW5zaWNzLmpzCi0vLyBuYXRpdmUgdHlwZWRlZiB1
c2hvcnQ7Ci0vLyBuYXRpdmUgdHlwZWRlZiBjaGFyOwotLy8gbmF0aXZlIHR5cGVkZWYgc2hvcnQ7
Ci0vLyBuYXRpdmUgdHlwZWRlZiBoYWxmOwotLy8gbmF0aXZlIHR5cGVkZWYgYXRvbWljX2ludDsK
LS8vIG5hdGl2ZSB0eXBlZGVmIGF0b21pY191aW50OworbmF0aXZlIHR5cGVkZWYgYXRvbWljX2lu
dDsKK25hdGl2ZSB0eXBlZGVmIGF0b21pY191aW50OworCituYXRpdmUgdHlwZWRlZiB2ZWN0b3I8
Ym9vbCwgMj47CituYXRpdmUgdHlwZWRlZiBib29sMiA9IHZlY3Rvcjxib29sLCAyPjsKK25hdGl2
ZSB0eXBlZGVmIHZlY3Rvcjxib29sLCAzPjsKK25hdGl2ZSB0eXBlZGVmIGJvb2wzID0gdmVjdG9y
PGJvb2wsIDM+OworbmF0aXZlIHR5cGVkZWYgdmVjdG9yPGJvb2wsIDQ+OworbmF0aXZlIHR5cGVk
ZWYgYm9vbDQgPSB2ZWN0b3I8Ym9vbCwgND47CituYXRpdmUgdHlwZWRlZiB2ZWN0b3I8dWNoYXIs
IDI+OworbmF0aXZlIHR5cGVkZWYgdWNoYXIyID0gdmVjdG9yPHVjaGFyLCAyPjsKK25hdGl2ZSB0
eXBlZGVmIHZlY3Rvcjx1Y2hhciwgMz47CituYXRpdmUgdHlwZWRlZiB1Y2hhcjMgPSB2ZWN0b3I8
dWNoYXIsIDM+OworbmF0aXZlIHR5cGVkZWYgdmVjdG9yPHVjaGFyLCA0PjsKK25hdGl2ZSB0eXBl
ZGVmIHVjaGFyNCA9IHZlY3Rvcjx1Y2hhciwgND47CituYXRpdmUgdHlwZWRlZiB2ZWN0b3I8dXNo
b3J0LCAyPjsKK25hdGl2ZSB0eXBlZGVmIHVzaG9ydDIgPSB2ZWN0b3I8dXNob3J0LCAyPjsKK25h
dGl2ZSB0eXBlZGVmIHZlY3Rvcjx1c2hvcnQsIDM+OworbmF0aXZlIHR5cGVkZWYgdXNob3J0MyA9
IHZlY3Rvcjx1c2hvcnQsIDM+OworbmF0aXZlIHR5cGVkZWYgdmVjdG9yPHVzaG9ydCwgND47Citu
YXRpdmUgdHlwZWRlZiB1c2hvcnQ0ID0gdmVjdG9yPHVzaG9ydCwgND47CituYXRpdmUgdHlwZWRl
ZiB2ZWN0b3I8dWludCwgMj47CituYXRpdmUgdHlwZWRlZiB1aW50MiA9IHZlY3Rvcjx1aW50LCAy
PjsKK25hdGl2ZSB0eXBlZGVmIHZlY3Rvcjx1aW50LCAzPjsKK25hdGl2ZSB0eXBlZGVmIHVpbnQz
ID0gdmVjdG9yPHVpbnQsIDM+OworbmF0aXZlIHR5cGVkZWYgdmVjdG9yPHVpbnQsIDQ+OworbmF0
aXZlIHR5cGVkZWYgdWludDQgPSB2ZWN0b3I8dWludCwgND47CituYXRpdmUgdHlwZWRlZiB2ZWN0
b3I8Y2hhciwgMj47CituYXRpdmUgdHlwZWRlZiBjaGFyMiA9IHZlY3RvcjxjaGFyLCAyPjsKK25h
dGl2ZSB0eXBlZGVmIHZlY3RvcjxjaGFyLCAzPjsKK25hdGl2ZSB0eXBlZGVmIGNoYXIzID0gdmVj
dG9yPGNoYXIsIDM+OworbmF0aXZlIHR5cGVkZWYgdmVjdG9yPGNoYXIsIDQ+OworbmF0aXZlIHR5
cGVkZWYgY2hhcjQgPSB2ZWN0b3I8Y2hhciwgND47CituYXRpdmUgdHlwZWRlZiB2ZWN0b3I8c2hv
cnQsIDI+OworbmF0aXZlIHR5cGVkZWYgc2hvcnQyID0gdmVjdG9yPHNob3J0LCAyPjsKK25hdGl2
ZSB0eXBlZGVmIHZlY3RvcjxzaG9ydCwgMz47CituYXRpdmUgdHlwZWRlZiBzaG9ydDMgPSB2ZWN0
b3I8c2hvcnQsIDM+OworbmF0aXZlIHR5cGVkZWYgdmVjdG9yPHNob3J0LCA0PjsKK25hdGl2ZSB0
eXBlZGVmIHNob3J0NCA9IHZlY3RvcjxzaG9ydCwgND47CituYXRpdmUgdHlwZWRlZiB2ZWN0b3I8
aW50LCAyPjsKK25hdGl2ZSB0eXBlZGVmIGludDIgPSB2ZWN0b3I8aW50LCAyPjsKK25hdGl2ZSB0
eXBlZGVmIHZlY3RvcjxpbnQsIDM+OworbmF0aXZlIHR5cGVkZWYgaW50MyA9IHZlY3RvcjxpbnQs
IDM+OworbmF0aXZlIHR5cGVkZWYgdmVjdG9yPGludCwgND47CituYXRpdmUgdHlwZWRlZiBpbnQ0
ID0gdmVjdG9yPGludCwgND47CituYXRpdmUgdHlwZWRlZiB2ZWN0b3I8aGFsZiwgMj47CituYXRp
dmUgdHlwZWRlZiBoYWxmMiA9IHZlY3RvcjxoYWxmLCAyPjsKK25hdGl2ZSB0eXBlZGVmIHZlY3Rv
cjxoYWxmLCAzPjsKK25hdGl2ZSB0eXBlZGVmIGhhbGYzID0gdmVjdG9yPGhhbGYsIDM+OworbmF0
aXZlIHR5cGVkZWYgdmVjdG9yPGhhbGYsIDQ+OworbmF0aXZlIHR5cGVkZWYgaGFsZjQgPSB2ZWN0
b3I8aGFsZiwgND47CituYXRpdmUgdHlwZWRlZiB2ZWN0b3I8ZmxvYXQsIDI+OworbmF0aXZlIHR5
cGVkZWYgZmxvYXQyID0gdmVjdG9yPGZsb2F0LCAyPjsKK25hdGl2ZSB0eXBlZGVmIHZlY3Rvcjxm
bG9hdCwgMz47CituYXRpdmUgdHlwZWRlZiBmbG9hdDMgPSB2ZWN0b3I8ZmxvYXQsIDM+OworbmF0
aXZlIHR5cGVkZWYgdmVjdG9yPGZsb2F0LCA0PjsKK25hdGl2ZSB0eXBlZGVmIGZsb2F0NCA9IHZl
Y3RvcjxmbG9hdCwgND47CiAKIG5hdGl2ZSBvcGVyYXRvciBpbnQodWludCk7CiBuYXRpdmUgb3Bl
cmF0b3IgaW50KHVjaGFyKTsKQEAgLTE0NywyOCArMjAwLDEyIEBAIGJvb2wgb3BlcmF0b3J+KGJv
b2wgdmFsdWUpCiB7CiAgICAgcmV0dXJuICF2YWx1ZTsKIH0KLQotbmF0aXZlIHR5cGVkZWYgdWNo
YXIyOwotbmF0aXZlIHR5cGVkZWYgdWNoYXIzOwotbmF0aXZlIHR5cGVkZWYgdWNoYXI0OwotCi1u
YXRpdmUgdHlwZWRlZiB1aW50MjsKLW5hdGl2ZSB0eXBlZGVmIHVpbnQzOwotbmF0aXZlIHR5cGVk
ZWYgdWludDQ7Ci0KLW5hdGl2ZSB0eXBlZGVmIGludDI7Ci1uYXRpdmUgdHlwZWRlZiBpbnQzOwot
bmF0aXZlIHR5cGVkZWYgaW50NDsKLQotbmF0aXZlIHR5cGVkZWYgZmxvYXQyOwotbmF0aXZlIHR5
cGVkZWYgZmxvYXQzOwotbmF0aXZlIHR5cGVkZWYgZmxvYXQ0OwogYDsKIAogLy8gRklYTUU6IE9u
Y2UgdGhlIHN0YW5kYXJkIGxpYnJhcnkgaGFzIGJlZW4gcmVwbGFjZWQgd2l0aCBhIG5ldyB2ZXJz
aW9uLCB0aGlzIGNvbW1lbnRzIHNob3VsZCBiZSByZW1vdmVkLgogLy8gVGhpcyBsaXN0IGlzIHVz
ZWQgdG8gcmVzdHJpY3QgdGhlIGF2YWlsYWJpbGl0eSBvZiB2ZWN0b3IgdHlwZXMgYXZhaWxhYmxl
IGluIHRoZSBsYW5nYXVnZS4KIC8vIFBlcm1pc3NpYmxlIHZlY3RvciBlbGVtZW50IHR5cGVzIG11
c3QgYXBwZWFyIGluIHRoaXMgbGlzdCBhbmQgaW4gdGhlIHN0YW5kYXJkIGxpYnJhcnkKLWNvbnN0
IFZlY3RvckVsZW1lbnRUeXBlcyA9IFsgLyoiYm9vbCIsKi8gInVjaGFyIiwgLyoiY2hhciIsICJ1
c2hvcnQiLCAic2hvcnQiLCovICJ1aW50IiwgImludCIsIC8qICJoYWxmIiwgKi8iZmxvYXQiIF07
Citjb25zdCBWZWN0b3JFbGVtZW50VHlwZXMgPSBbICJib29sIiwgInVjaGFyIiwgImNoYXIiLCAi
dXNob3J0IiwgInNob3J0IiwgInVpbnQiLCAiaW50IiwgImhhbGYiLCAiZmxvYXQiIF07CiBjb25z
dCBWZWN0b3JFbGVtZW50U2l6ZXMgPSBbIDIsIDMsIDQgXTsKIAogZnVuY3Rpb24gYWxsVmVjdG9y
VHlwZU5hbWVzKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Zl
Y3RvclR5cGUuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9WZWN0b3JUeXBlLmpz
CmluZGV4IDUwMTRjNjcxYTA3ODgyMDAyYzIzNGJiMzJmMTdjODg2MGVmZmMxYzYuLjU5ZDc4OTk2
MjhkNDBkMDBhOTgzYTNhZjg0ZGVjM2RjOTMwYmU4OWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL1ZlY3RvclR5cGUuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvVmVjdG9yVHlwZS5qcwpAQCAtMjUsMTkgKzI1LDEzIEBACiAidXNlIHN0cmlj
dCI7CiAKIGNsYXNzIFZlY3RvclR5cGUgZXh0ZW5kcyBOYXRpdmVUeXBlIHsKLSAgICBjb25zdHJ1
Y3RvcihvcmlnaW4sIG5hbWUpCisgICAgY29uc3RydWN0b3Iob3JpZ2luLCBuYW1lLCB0eXBlQXJn
dW1lbnRzKQogICAgIHsKLSAgICAgICAgc3VwZXIob3JpZ2luLCBuYW1lKTsKLSAgICAgICAgY29u
c3QgbWF0Y2ggPSAvXihbQS16XSspKFswLTldKSQvLmV4ZWMobmFtZSk7Ci0gICAgICAgIGlmICgh
bWF0Y2gpCi0gICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihvcmlnaW4ub3JpZ2luU3Ry
aW5nLCBgJHtuYW1lfSBkb2Vzbid0IG1hdGNoIHRoZSBmb3JtYXQgZm9yIHZlY3RvciB0eXBlIG5h
bWVzLidgKTsKLQotICAgICAgICB0aGlzLl9lbGVtZW50VHlwZSA9IG5ldyBUeXBlUmVmKG9yaWdp
biwgbWF0Y2hbMV0pOwotICAgICAgICB0aGlzLl9udW1FbGVtZW50c1ZhbHVlID0gcGFyc2VJbnQo
bWF0Y2hbMl0pOworICAgICAgICBzdXBlcihvcmlnaW4sIG5hbWUsIHR5cGVBcmd1bWVudHMpOwog
ICAgIH0KIAotICAgIGdldCBlbGVtZW50VHlwZSgpIHsgcmV0dXJuIHRoaXMuX2VsZW1lbnRUeXBl
OyB9Ci0gICAgZ2V0IG51bUVsZW1lbnRzVmFsdWUoKSB7IHJldHVybiB0aGlzLl9udW1FbGVtZW50
c1ZhbHVlOyB9CisgICAgZ2V0IGVsZW1lbnRUeXBlKCkgeyByZXR1cm4gdGhpcy50eXBlQXJndW1l
bnRzWzBdOyB9CisgICAgZ2V0IG51bUVsZW1lbnRzVmFsdWUoKSB7IHJldHVybiB0aGlzLnR5cGVB
cmd1bWVudHNbMV0udmFsdWU7IH0KICAgICBnZXQgc2l6ZSgpIHsgcmV0dXJuIHRoaXMuZWxlbWVu
dFR5cGUuc2l6ZSAqIHRoaXMubnVtRWxlbWVudHNWYWx1ZTsgfQogCiAgICAgdW5pZnlJbXBsKHVu
aWZpY2F0aW9uQ29udGV4dCwgb3RoZXIpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347673</attachid>
            <date>2018-08-21 13:03:52 -0700</date>
            <delta_ts>2018-08-21 15:58:45 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-188773-20180821130351.patch</filename>
            <type>text/plain</type>
            <size>55548</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1MDk5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMTZhMTQ0ZmE2ZDA3MWJmY2FmZmY0YTMzMGY0YzFlMGUz
MjYwZDIzOC4uNGQ1ODAxZTBkZTllOTVkZTVlMDA4ODkyMTg0NzYzMjg3NWIwOWZmYSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMx
IEBACisyMDE4LTA4LTIwICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CisKKyAgICAgICAgW1dITFNMXSBBbGxvdyBuYXRpdmUgdHlwZXMgdG8gaGF2ZSB0eXBlIGFyZ3Vt
ZW50cyAobGlrZSAidmVjdG9yPGZsb2F0LCA0PiIpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODg3NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0ludHJpbnNp
Y3MuanM6CisgICAgICAgIChJbnRyaW5zaWNzLmNhc3QpOgorICAgICAgICAoSW50cmluc2ljcy5i
aXR3aXNlQ2FzdCk6CisgICAgICAgIChJbnRyaW5zaWNzLmNhc3RUb0hhbGYpOgorICAgICAgICAo
SW50cmluc2ljcy4pOgorICAgICAgICAoSW50cmluc2ljcyk6CisgICAgICAgICogV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvTmF0aXZlVHlwZS5qczoKKyAgICAgICAgKE5hdGl2ZVR5cGUpOgorICAg
ICAgICAoTmF0aXZlVHlwZS5wcm90b3R5cGUuZ2V0IHR5cGVBcmd1bWVudHMpOgorICAgICAgICAo
TmF0aXZlVHlwZS5wcm90b3R5cGUudG9TdHJpbmcpOgorICAgICAgICAoTmF0aXZlVHlwZS5jcmVh
dGUpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1BhcnNlLmpzOgorICAgICAg
ICAoaXNDYWxsRXhwcmVzc2lvbik6CisgICAgICAgIChwYXJzZU5hdGl2ZSk6CisgICAgICAgICog
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhbmRhcmRMaWJyYXJ5LmpzOgorICAgICAgICAoYm9v
bC5vcGVyYXRvcik6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVmVjdG9yVHlw
ZS5qczoKKyAgICAgICAgKFZlY3RvclR5cGUpOgorICAgICAgICAoVmVjdG9yVHlwZS5wcm90b3R5
cGUuZ2V0IGVsZW1lbnRUeXBlKToKKyAgICAgICAgKFZlY3RvclR5cGUucHJvdG90eXBlLmdldCBu
dW1FbGVtZW50c1ZhbHVlKToKKwogMjAxOC0wOC0yMCAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFy
ZEBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViS2l0VGVzdFJ1bm5lcjogQWRkIHdhdGNoT1MgZW50
aXRsZW1lbnRzCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9BbGwu
anMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9BbGwuanMKaW5kZXggODE1MjUyNzNh
ZTY1YTE0ODY1OTY0YTEzZGE0NWNlOTRlZjEwNjg0YS4uYmQwOTNhZjU0Y2YxY2Y3NjY3NjIyNWNk
MzJmZjQwNWM2NDk0NTQxNSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvQWxsLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0FsbC5qcwpAQCAt
MTU3LDYgKzE1Nyw3IEBAIGxvYWQoIlRyYXBTdGF0ZW1lbnQuanMiKTsKIGxvYWQoIlR5cGVEZWYu
anMiKTsKIGxvYWQoIlR5cGVEZWZSZXNvbHZlci5qcyIpOwogbG9hZCgiVHlwZVJlZi5qcyIpOwor
bG9hZCgiVHlwZU92ZXJsb2FkUmVzb2x1dGlvbkZhaWx1cmUuanMiKTsKIGxvYWQoIlR5cGVkVmFs
dWUuanMiKTsKIGxvYWQoIlVpbnRMaXRlcmFsLmpzIik7CiBsb2FkKCJVaW50TGl0ZXJhbFR5cGUu
anMiKTsKQEAgLTE3MCw0ICsxNzEsNCBAQCBsb2FkKCJXU3ludGF4RXJyb3IuanMiKTsKIGxvYWQo
IldUcmFwRXJyb3IuanMiKTsKIGxvYWQoIldUeXBlRXJyb3IuanMiKTsKIGxvYWQoIldoaWxlTG9v
cC5qcyIpOwotbG9hZCgiV3JhcENoZWNrZXIuanMiKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCitsb2FkKCJXcmFwQ2hlY2tlci5qcyIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvQ2FsbEV4cHJlc3Npb24uanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9DYWxsRXhwcmVzc2lvbi5qcwppbmRleCA2ZGJhMTUzMjk0NmNkYTc4ZDc5NTVjNTY0
YmFjY2NiNjgyMzA3NjJjLi5hZTI3NDFlNzc1YzM3ZmZmOGQ3MGRmMDJjM2VmZDA3OGMyNmYwNTRj
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DYWxsRXhwcmVzc2lv
bi5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DYWxsRXhwcmVzc2lvbi5q
cwpAQCAtNjYsNyArNjYsNiBAQCBjbGFzcyBDYWxsRXhwcmVzc2lvbiBleHRlbmRzIEV4cHJlc3Np
b24gewogICAgICAgICAgICAgICAgIG92ZXJsb2FkLmZ1bmMgPSBmdW5jOwogICAgICAgICB9CiAK
LQogICAgICAgICBpZiAoIW92ZXJsb2FkLmZ1bmMpIHsKICAgICAgICAgICAgIGZhaWx1cmVzLnB1
c2goLi4ub3ZlcmxvYWQuZmFpbHVyZXMpOwogICAgICAgICAgICAgbGV0IG1lc3NhZ2UgPSAiRGlk
IG5vdCBmaW5kIGZ1bmN0aW9uIG5hbWVkICIgKyB0aGlzLm5hbWUgKyAiIGZvciBjYWxsIHdpdGgg
IjsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NoZWNrZXIuanMg
Yi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DaGVja2VyLmpzCmluZGV4IDFhMTRjODY2
YWNlZDQxMTJiMTgwZjY5MTU2YzA2ZDJiNjY0ZDg3ZTIuLmFmY2EwMmIwODhjZGZjNThhNzEyMzNk
MjhiMDFmNWRhMTNmMjViYWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL0NoZWNrZXIuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2hlY2tl
ci5qcwpAQCAtMjQ1LDkgKzI0NSwxMyBAQCBjbGFzcyBDaGVja2VyIGV4dGVuZHMgVmlzaXRvciB7
CiAgICAgCiAgICAgdmlzaXRUeXBlUmVmKG5vZGUpCiAgICAgewotICAgICAgICBpZiAoIW5vZGUu
dHlwZSkKKyAgICAgICAgaWYgKCFub2RlLnR5cGUgJiYgIW5vZGUucG9zc2libGVPdmVybG9hZHMp
CiAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlR5cGUgcmVmZXJlbmNlIHdpdGhvdXQgYSB0
eXBlIGluIGNoZWNrZXI6ICIgKyBub2RlICsgIiBhdCAiICsgbm9kZS5vcmlnaW4pOwotICAgICAg
ICBpZiAoIShub2RlLnR5cGUgaW5zdGFuY2VvZiBTdHJ1Y3RUeXBlKSkKKyAgICAgICAgaWYgKCFu
b2RlLnR5cGUpCisgICAgICAgICAgICBub2RlLnJlc29sdmUobm9kZS5wb3NzaWJsZU92ZXJsb2Fk
cywgdGhpcy5fcHJvZ3JhbSk7CisgICAgICAgIGlmICghbm9kZS50eXBlKQorICAgICAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJUeXBlIHJlZmVyZW5jZSB3aXRob3V0IGEgdHlwZSBhZnRlciBwb3Nz
aWJseSByZXNvbHZpbmcgaW4gY2hlY2tlcjogIiArIG5vZGUgKyAiIGF0ICIgKyBub2RlLm9yaWdp
bik7CisgICAgICAgIGlmICghKG5vZGUudHlwZSBpbnN0YW5jZW9mIFN0cnVjdFR5cGUpKSAvLyBX
aHkgZG9uJ3Qgd2UgcmVjdXJzZSBvbiBTdHJ1Y3RUeXBlcz8KICAgICAgICAgICAgIG5vZGUudHlw
ZS52aXNpdCh0aGlzKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL0luZmVyVHlwZXNGb3JDYWxsLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvSW5mZXJUeXBlc0ZvckNhbGwuanMKaW5kZXggNWYzMmVkMWM0OTBhN2RmODk0MWU5MTlj
MTMwY2Y2NWVhYThiNmE0ZC4uYmNmZWI5ODZjYWZmNDlmMDI4N2E4MzY3OGJmMTE1NjI4NDdmMDM4
OSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvSW5mZXJUeXBlc0Zv
ckNhbGwuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvSW5mZXJUeXBlc0Zv
ckNhbGwuanMKQEAgLTM2LDEyICszNiw4IEBAIGZ1bmN0aW9uIGluZmVyVHlwZXNGb3JDYWxsKGZ1
bmMsIGFyZ3VtZW50VHlwZXMsIHJldHVyblR5cGUpCiAgICAgICAgIGlmICghYXJndW1lbnRUeXBl
c1tpXS51bmlmeSh1bmlmaWNhdGlvbkNvbnRleHQsIGZ1bmMucGFyYW1ldGVyc1tpXS50eXBlKSkK
ICAgICAgICAgICAgIHJldHVybiB7ZmFpbHVyZTogbmV3IE92ZXJsb2FkUmVzb2x1dGlvbkZhaWx1
cmUoZnVuYywgIkFyZ3VtZW50ICMiICsgKGkgKyAxKSArICIgIiArIChmdW5jLnBhcmFtZXRlcnNb
aV0ubmFtZSA/ICJmb3IgcGFyYW1ldGVyICIgKyBmdW5jLnBhcmFtZXRlcnNbaV0ubmFtZSArICIg
IiA6ICIiKSArICJkb2VzIG5vdCBtYXRjaCAocGFzc2VkICIgKyBhcmd1bWVudFR5cGVzW2ldICsg
IiwgcmVxdWlyZSAiICsgZnVuYy5wYXJhbWV0ZXJzW2ldLnR5cGUgKyAiKSIpfTsKICAgICB9Ci0g
ICAgaWYgKHJldHVyblR5cGUgJiYgIXJldHVyblR5cGUudW5pZnkodW5pZmljYXRpb25Db250ZXh0
LCBmdW5jLnJldHVyblR5cGUpKSB7Ci0gICAgICAgIGlmIChmdW5jLnJldHVyblR5cGUudG9TdHJp
bmcoKSA9PSAidmVjdG9yIikgewotICAgICAgICAgICAgcmV0dXJuVHlwZS51bmlmeSh1bmlmaWNh
dGlvbkNvbnRleHQsIGZ1bmMucmV0dXJuVHlwZSkKLSAgICAgICAgfQorICAgIGlmIChyZXR1cm5U
eXBlICYmICFyZXR1cm5UeXBlLnVuaWZ5KHVuaWZpY2F0aW9uQ29udGV4dCwgZnVuYy5yZXR1cm5U
eXBlKSkKICAgICAgICAgcmV0dXJuIHtmYWlsdXJlOiBuZXcgT3ZlcmxvYWRSZXNvbHV0aW9uRmFp
bHVyZShmdW5jLCAiUmV0dXJuIHR5cGUgIiArIGZ1bmMucmV0dXJuVHlwZSArICIgZG9lcyBub3Qg
bWF0Y2ggIiArIHJldHVyblR5cGUpfTsKLSAgICB9CiAgICAgbGV0IHZlcmlmaWNhdGlvblJlc3Vs
dCA9IHVuaWZpY2F0aW9uQ29udGV4dC52ZXJpZnkoKTsKICAgICBpZiAoIXZlcmlmaWNhdGlvblJl
c3VsdC5yZXN1bHQpCiAgICAgICAgIHJldHVybiB7ZmFpbHVyZTogbmV3IE92ZXJsb2FkUmVzb2x1
dGlvbkZhaWx1cmUoZnVuYywgdmVyaWZpY2F0aW9uUmVzdWx0LnJlYXNvbil9OwpAQCAtNDksMyAr
NDUsMjEgQEAgZnVuY3Rpb24gaW5mZXJUeXBlc0ZvckNhbGwoZnVuYywgYXJndW1lbnRUeXBlcywg
cmV0dXJuVHlwZSkKICAgICByZXR1cm4ge2Z1bmMsIHVuaWZpY2F0aW9uQ29udGV4dH07CiB9CiAK
K2Z1bmN0aW9uIGluZmVyVHlwZXNGb3JUeXBlQXJndW1lbnRzKHR5cGUsIHR5cGVBcmd1bWVudHMp
Cit7CisgICAgaWYgKHR5cGVBcmd1bWVudHMubGVuZ3RoICE9IHR5cGUudHlwZUFyZ3VtZW50cy5s
ZW5ndGgpCisgICAgICAgIHJldHVybiB7ZmFpbHVyZTogbmV3IFR5cGVPdmVybG9hZFJlc29sdXRp
b25GYWlsdXJlKHR5cGUsICJXcm9uZyBudW1iZXIgb2YgYXJndW1lbnRzIChwYXNzZWQgIiArIHR5
cGVBcmd1bWVudHMubGVuZ3RoICsgIiwgcmVxdWlyZSAiICsgdHlwZS50eXBlQXJndW1lbnRzLmxl
bmd0aCArICIpIil9OworICAgIGxldCB1bmlmaWNhdGlvbkNvbnRleHQgPSBuZXcgVW5pZmljYXRp
b25Db250ZXh0KCk7CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IHR5cGVBcmd1bWVudHMubGVu
Z3RoOyArK2kpIHsKKyAgICAgICAgaWYgKCF0eXBlQXJndW1lbnRzW2ldKQorICAgICAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJOdWxsIHR5cGUgYXJndW1lbnQgYXQgaSA9ICIgKyBpKTsKKyAgICAg
ICAgaWYgKCF0eXBlQXJndW1lbnRzW2ldLnVuaWZ5KHVuaWZpY2F0aW9uQ29udGV4dCwgdHlwZS50
eXBlQXJndW1lbnRzW2ldKSkKKyAgICAgICAgICAgIHJldHVybiB7ZmFpbHVyZTogbmV3IFR5cGVP
dmVybG9hZFJlc29sdXRpb25GYWlsdXJlKHR5cGUsICJBcmd1bWVudCAjIiArIChpICsgMSkgKyAi
ICIgKyAodHlwZS50eXBlQXJndW1lbnRzW2ldLm5hbWUgPyAiZm9yIHBhcmFtZXRlciAiICsgdHlw
ZS50eXBlQXJndW1lbnRzW2ldLm5hbWUgKyAiICIgOiAiIikgKyAiZG9lcyBub3QgbWF0Y2ggKHBh
c3NlZCAiICsgdHlwZUFyZ3VtZW50c1tpXSArICIsIHJlcXVpcmUgIiArIHR5cGUudHlwZUFyZ3Vt
ZW50c1tpXS50eXBlICsgIikiKX07CisgICAgfQorICAgIGxldCB2ZXJpZmljYXRpb25SZXN1bHQg
PSB1bmlmaWNhdGlvbkNvbnRleHQudmVyaWZ5KCk7CisgICAgaWYgKCF2ZXJpZmljYXRpb25SZXN1
bHQucmVzdWx0KQorICAgICAgICByZXR1cm4ge2ZhaWx1cmU6IG5ldyBUeXBlT3ZlcmxvYWRSZXNv
bHV0aW9uRmFpbHVyZSh0eXBlLCB2ZXJpZmljYXRpb25SZXN1bHQucmVhc29uKX07CisKKyAgICBy
ZXR1cm4ge3R5cGUsIHVuaWZpY2F0aW9uQ29udGV4dH07Cit9CmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9JbnRyaW5zaWNzLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvSW50cmluc2ljcy5qcwppbmRleCA1MGQ0MGMwYzBlNDdlMTEyYmM3NGNjZmNj
YjcwNDk0MjcxMTZiMGZiLi5mZDMyYmMyOGIzYjU5Y2EyYzkxMmM4ZjJlYTQ1YWJkMzU1NzU3MTM2
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9JbnRyaW5zaWNzLmpz
CisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0ludHJpbnNpY3MuanMKQEAgLTMz
LDE1ICszMyw3IEBAIGNsYXNzIEludHJpbnNpY3MgewogICAgICAgICAvLyB0byBjYXRjaCB0aGUg
aW50cmluc2ljcyBtdXN0IGJlIGJhc2VkIG9uIHRoZSB0eXBlIG5hbWVzIHRoYXQgU3RhbmRhcmRM
aWJyYXJ5LmpzIHVzZXMuCiAgICAgICAgIC8vIEZvciBleGFtcGxlLCBpZiBhIG5hdGl2ZSBmdW5j
dGlvbiBpcyBkZWNsYXJlZCB1c2luZyAiaW50IiByYXRoZXIgdGhhbiAiaW50IiwgdGhlbiB3ZSBt
dXN0CiAgICAgICAgIC8vIHVzZSAiaW50IiBoZXJlLCBzaW5jZSB3ZSBkb24ndCB5ZXQga25vdyB0
aGF0IHRoZXkgYXJlIHRoZSBzYW1lIHR5cGUuCi0gICAgICAgIAotICAgICAgICB0aGlzLl9tYXAu
c2V0KAotICAgICAgICAgICAgIm5hdGl2ZSB0eXBlZGVmIHZvaWQiLAotICAgICAgICAgICAgdHlw
ZSA9PiB7Ci0gICAgICAgICAgICAgICAgdGhpcy52b2lkID0gdHlwZTsKLSAgICAgICAgICAgICAg
ICB0eXBlLnNpemUgPSAwOwotICAgICAgICAgICAgICAgIHR5cGUucG9wdWxhdGVEZWZhdWx0VmFs
dWUgPSAoKSA9PiB7IH07Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgCisKICAgICAgICAgZnVu
Y3Rpb24gaXNCaXR3aXNlRXF1aXZhbGVudChsZWZ0LCByaWdodCkKICAgICAgICAgewogICAgICAg
ICAgICAgbGV0IGRvdWJsZUFycmF5ID0gbmV3IEZsb2F0NjRBcnJheSgxKTsKQEAgLTU2LDU4ICs0
OCw4MyBAQCBjbGFzcyBJbnRyaW5zaWNzIHsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICB9CiAKKyAgICAgICAgZnVuY3Rpb24gY2FzdCh0eXBlZEFycmF5Q29uc3RydWN0b3IsIG51
bWJlcikKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGFycmF5ID0gbmV3IHR5cGVkQXJyYXlD
b25zdHJ1Y3RvcigxKTsKKyAgICAgICAgICAgIGFycmF5WzBdID0gbnVtYmVyOworICAgICAgICAg
ICAgcmV0dXJuIGFycmF5WzBdOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gYml0d2lz
ZUNhc3QodHlwZWRBcnJheUNvbnN0cnVjdG9yMSwgdHlwZWRBcnJheUNvbnN0cnVjdG9yMiwgdmFs
dWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGxldCB0eXBlZEFycmF5MSA9IG5ldyB0eXBlZEFy
cmF5Q29uc3RydWN0b3IxKDEpOworICAgICAgICAgICAgbGV0IHR5cGVkQXJyYXkyID0gbmV3IHR5
cGVkQXJyYXlDb25zdHJ1Y3RvcjIodHlwZWRBcnJheTEuYnVmZmVyKTsKKyAgICAgICAgICAgIHR5
cGVkQXJyYXkxWzBdID0gdmFsdWU7CisgICAgICAgICAgICByZXR1cm4gdHlwZWRBcnJheTJbMF07
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjYXN0VG9IYWxmKG51bWJlcikKKyAgICAg
ICAgeworICAgICAgICAgICAgLy8gRklYTUU6IE1ha2UgdGhpcyBtYXRoIG9iZXkgSUVFRSA3NTQu
CisgICAgICAgICAgICBpZiAoTnVtYmVyLmlzTmFOKG51bWJlcikpCisgICAgICAgICAgICAgICBy
ZXR1cm4gbnVtYmVyCisgICAgICAgICAgICBpZiAobnVtYmVyID4gNjU1MDQpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIE51bWJlci5QT1NJVElWRV9JTkZJTklUWTsKKyAgICAgICAgICAgIGlmIChu
dW1iZXIgPCAtNjU1MDQpCisgICAgICAgICAgICAgICAgcmV0dXJuIE51bWJlci5ORUdBVElWRV9J
TkZJTklUWTsKKyAgICAgICAgICAgIGlmIChudW1iZXIgPiAwICYmIG51bWJlciA8IE1hdGgucG93
KDIsIC0yNCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBpZiAobnVt
YmVyIDwgMCAmJiBudW1iZXIgPiAtTWF0aC5wb3coMiwgLTI0KSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gLTA7CisgICAgICAgICAgICBsZXQgZG91YmxlQXJyYXkgPSBuZXcgRmxvYXQ2NEFycmF5
KDEpOworICAgICAgICAgICAgbGV0IHVpbnRBcnJheSA9IG5ldyBVaW50OEFycmF5KGRvdWJsZUFy
cmF5LmJ1ZmZlcik7CisgICAgICAgICAgICBkb3VibGVBcnJheVswXSA9IG51bWJlcjsKKyAgICAg
ICAgICAgIGxldCBzaWduID0gdWludEFycmF5WzddICYgMHg4MDsKKyAgICAgICAgICAgIGxldCBl
eHBvbmVudCA9ICgodWludEFycmF5WzddICYgMHg3ZikgPDwgNCkgfCAoKHVpbnRBcnJheVs2XSAm
IDB4ZjApID4+PiA0KTsKKyAgICAgICAgICAgIGxldCBzaWduaWZpY2FuZCA9ICgodWludEFycmF5
WzZdICYgMHgwZikgPDwgNikgfCAoKHVpbnRBcnJheVs1XSAmIDB4ZmMpID4+PiAyKTsKKworICAg
ICAgICAgICAgaWYgKChleHBvbmVudCAtIDEwMjMpIDwgLTE0KSB7CisgICAgICAgICAgICAgICAg
ZXhwb25lbnQgPSAwOworICAgICAgICAgICAgICAgIHNpZ25pZmljYW5kID0gKE1hdGguYWJzKG51
bWJlcikgKiBNYXRoLnBvdygyLCAyNCkpID4+PiAwOworICAgICAgICAgICAgICAgIGxldCB2YWx1
ZSA9IE1hdGgucG93KDIsIC0xNCkgKiBzaWduaWZpY2FuZCAvIDEwMjQ7CisgICAgICAgICAgICAg
ICAgaWYgKHNpZ24gIT0gMCkKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgKj0gLTE7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHZhbHVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBk
b3VibGVBcnJheVswXSA9IDA7CisKKyAgICAgICAgICAgIHVpbnRBcnJheVs3XSB8PSBzaWduOwor
ICAgICAgICAgICAgdWludEFycmF5WzddIHw9IChleHBvbmVudCA+Pj4gNCk7CisgICAgICAgICAg
ICB1aW50QXJyYXlbNl0gfD0gKChleHBvbmVudCA8PCA0KSAmIDB4ZjApOworICAgICAgICAgICAg
dWludEFycmF5WzZdIHw9IChzaWduaWZpY2FuZCA+Pj4gNik7CisgICAgICAgICAgICB1aW50QXJy
YXlbNV0gfD0gKChzaWduaWZpY2FuZCA8PCAyKSAmIDB4ZmMpOworCisgICAgICAgICAgICByZXR1
cm4gZG91YmxlQXJyYXlbMF07CisgICAgICAgIH0KKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAot
ICAgICAgICAgICAgIm5hdGl2ZSB0eXBlZGVmIGludCIsCisgICAgICAgICAgICAibmF0aXZlIHR5
cGVkZWYgdm9pZCIsCiAgICAgICAgICAgICB0eXBlID0+IHsKLSAgICAgICAgICAgICAgICB0aGlz
LmludCA9IHR5cGU7Ci0gICAgICAgICAgICAgICAgdHlwZS5pc1ByaW1pdGl2ZSA9IHRydWU7Ci0g
ICAgICAgICAgICAgICAgdHlwZS5pc0ludCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgdHlwZS5p
c051bWJlciA9IHRydWU7Ci0gICAgICAgICAgICAgICAgdHlwZS5pc1NpZ25lZCA9IHRydWU7Ci0g
ICAgICAgICAgICAgICAgdHlwZS5jYW5SZXByZXNlbnQgPSB2YWx1ZSA9PiBpc0JpdHdpc2VFcXVp
dmFsZW50KHZhbHVlIHwgMCwgdmFsdWUpOwotICAgICAgICAgICAgICAgIHR5cGUuc2l6ZSA9IDE7
Ci0gICAgICAgICAgICAgICAgdHlwZS5kZWZhdWx0VmFsdWUgPSAwOwotICAgICAgICAgICAgICAg
IHR5cGUuY3JlYXRlTGl0ZXJhbCA9IChvcmlnaW4sIHZhbHVlKSA9PiBJbnRMaXRlcmFsLndpdGhU
eXBlKG9yaWdpbiwgdmFsdWUgfCAwLCB0eXBlKTsKLSAgICAgICAgICAgICAgICB0eXBlLnN1Y2Nl
c3NvclZhbHVlID0gdmFsdWUgPT4gKHZhbHVlICsgMSkgfCAwOwotICAgICAgICAgICAgICAgIHR5
cGUudmFsdWVzRXF1YWwgPSAoYSwgYikgPT4gYSA9PT0gYjsKLSAgICAgICAgICAgICAgICB0eXBl
LnBvcHVsYXRlRGVmYXVsdFZhbHVlID0gKGJ1ZmZlciwgb2Zmc2V0KSA9PiBidWZmZXIuc2V0KG9m
ZnNldCwgMCk7Ci0gICAgICAgICAgICAgICAgdHlwZS5mb3JtYXRWYWx1ZUZyb21JbnRMaXRlcmFs
ID0gdmFsdWUgPT4gdmFsdWUgfCAwOwotICAgICAgICAgICAgICAgIHR5cGUuZm9ybWF0VmFsdWVG
cm9tVWludExpdGVyYWwgPSB2YWx1ZSA9PiB2YWx1ZSB8IDA7Ci0gICAgICAgICAgICAgICAgdHlw
ZS5hbGxWYWx1ZXMgPSBmdW5jdGlvbiooKSB7IAotICAgICAgICAgICAgICAgICAgICBmb3IgKGxl
dCBpID0gMDsgaSA8PSAweGZmZmZmZmZmOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGxldCB2YWx1ZSA9IGkgfCAwOwotICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQge3ZhbHVl
OiB2YWx1ZSwgbmFtZTogdmFsdWV9OwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgfTsKKyAgICAgICAgICAgICAgICB0aGlzLnZvaWQgPSB0eXBlOworICAgICAgICAgICAg
ICAgIHR5cGUuc2l6ZSA9IDA7CisgICAgICAgICAgICAgICAgdHlwZS5wb3B1bGF0ZURlZmF1bHRW
YWx1ZSA9ICgpID0+IHsgfTsKICAgICAgICAgICAgIH0pOwogCiAgICAgICAgIHRoaXMuX21hcC5z
ZXQoCi0gICAgICAgICAgICAibmF0aXZlIHR5cGVkZWYgdWludCIsCisgICAgICAgICAgICAibmF0
aXZlIHR5cGVkZWYgYm9vbCIsCiAgICAgICAgICAgICB0eXBlID0+IHsKLSAgICAgICAgICAgICAg
ICB0aGlzLnVpbnQgPSB0eXBlOworICAgICAgICAgICAgICAgIHRoaXMuYm9vbCA9IHR5cGU7CiAg
ICAgICAgICAgICAgICAgdHlwZS5pc1ByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAg
dHlwZS5pc0ludCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgdHlwZS5pc051bWJlciA9IHRydWU7
Ci0gICAgICAgICAgICAgICAgdHlwZS5pc1NpZ25lZCA9IGZhbHNlOwotICAgICAgICAgICAgICAg
IHR5cGUuY2FuUmVwcmVzZW50ID0gdmFsdWUgPT4gaXNCaXR3aXNlRXF1aXZhbGVudCh2YWx1ZSA+
Pj4gMCwgdmFsdWUpOwogICAgICAgICAgICAgICAgIHR5cGUuc2l6ZSA9IDE7Ci0gICAgICAgICAg
ICAgICAgdHlwZS5kZWZhdWx0VmFsdWUgPSAwOwotICAgICAgICAgICAgICAgIHR5cGUuY3JlYXRl
TGl0ZXJhbCA9IChvcmlnaW4sIHZhbHVlKSA9PiBJbnRMaXRlcmFsLndpdGhUeXBlKG9yaWdpbiwg
dmFsdWUgPj4+IDAsIHR5cGUpOwotICAgICAgICAgICAgICAgIHR5cGUuc3VjY2Vzc29yVmFsdWUg
PSB2YWx1ZSA9PiAodmFsdWUgKyAxKSA+Pj4gMDsKLSAgICAgICAgICAgICAgICB0eXBlLnZhbHVl
c0VxdWFsID0gKGEsIGIpID0+IGEgPT09IGI7Ci0gICAgICAgICAgICAgICAgdHlwZS5wb3B1bGF0
ZURlZmF1bHRWYWx1ZSA9IChidWZmZXIsIG9mZnNldCkgPT4gYnVmZmVyLnNldChvZmZzZXQsIDAp
OwotICAgICAgICAgICAgICAgIHR5cGUuZm9ybWF0VmFsdWVGcm9tSW50TGl0ZXJhbCA9IHZhbHVl
ID0+IHZhbHVlID4+PiAwOwotICAgICAgICAgICAgICAgIHR5cGUuZm9ybWF0VmFsdWVGcm9tVWlu
dExpdGVyYWwgPSB2YWx1ZSA9PiB2YWx1ZSA+Pj4gMDsKLSAgICAgICAgICAgICAgICB0eXBlLmFs
bFZhbHVlcyA9IGZ1bmN0aW9uKigpIHsgCi0gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkg
PSAwOyBpIDw9IDB4ZmZmZmZmZmY7ICsraSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxk
IHt2YWx1ZTogaSwgbmFtZTogaX07Ci0gICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAg
ICB0eXBlLnBvcHVsYXRlRGVmYXVsdFZhbHVlID0gKGJ1ZmZlciwgb2Zmc2V0KSA9PiBidWZmZXIu
c2V0KG9mZnNldCwgZmFsc2UpOwogICAgICAgICAgICAgfSk7CiAKICAgICAgICAgdGhpcy5fbWFw
LnNldCgKICAgICAgICAgICAgICJuYXRpdmUgdHlwZWRlZiB1Y2hhciIsCiAgICAgICAgICAgICB0
eXBlID0+IHsKICAgICAgICAgICAgICAgICB0aGlzLnVjaGFyID0gdHlwZTsKKyAgICAgICAgICAg
ICAgICB0eXBlLmlzUHJpbWl0aXZlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICB0eXBlLmlzSW50
ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICB0eXBlLmlzTnVtYmVyID0gdHJ1ZTsKICAgICAgICAg
ICAgICAgICB0eXBlLmlzU2lnbmVkID0gZmFsc2U7CkBAIC0xMjYsMTQ5ICsxNDMsMjk1IEBAIGNs
YXNzIEludHJpbnNpY3MgewogICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICB9KTsKIAor
CisgICAgICAgICAgICB0aGlzLl9tYXAuc2V0KAorICAgICAgICAgICAgICJuYXRpdmUgdHlwZWRl
ZiB1c2hvcnQiLAorICAgICAgICAgICAgIHR5cGUgPT4geworICAgICAgICAgICAgICAgICB0aGlz
LnVzaG9ydCA9IHR5cGU7CisgICAgICAgICAgICAgICAgIHR5cGUuaXNQcmltaXRpdmUgPSB0cnVl
OworICAgICAgICAgICAgICAgICB0eXBlLmlzSW50ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAg
dHlwZS5pc051bWJlciA9IHRydWU7CisgICAgICAgICAgICAgICAgIHR5cGUuaXNTaWduZWQgPSBm
YWxzZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5jYW5SZXByZXNlbnQgPSB2YWx1ZSA9PiBpc0Jp
dHdpc2VFcXVpdmFsZW50KHZhbHVlICYgMHhmZmZmLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAg
IHR5cGUuc2l6ZSA9IDE7CisgICAgICAgICAgICAgICAgIHR5cGUuZGVmYXVsdFZhbHVlID0gMDsK
KyAgICAgICAgICAgICAgICAgdHlwZS5jcmVhdGVMaXRlcmFsID0gKG9yaWdpbiwgdmFsdWUpID0+
IEludExpdGVyYWwud2l0aFR5cGUob3JpZ2luLCB2YWx1ZSAmIDB4ZmZmZiwgdHlwZSk7CisgICAg
ICAgICAgICAgICAgIHR5cGUuc3VjY2Vzc29yVmFsdWUgPSB2YWx1ZSA9PiAodmFsdWUgKyAxKSAm
IDB4ZmZmZjsKKyAgICAgICAgICAgICAgICAgdHlwZS52YWx1ZXNFcXVhbCA9IChhLCBiKSA9PiBh
ID09PSBiOworICAgICAgICAgICAgICAgICB0eXBlLnBvcHVsYXRlRGVmYXVsdFZhbHVlID0gKGJ1
ZmZlciwgb2Zmc2V0KSA9PiBidWZmZXIuc2V0KG9mZnNldCwgMCk7CisgICAgICAgICAgICAgICAg
IHR5cGUuZm9ybWF0VmFsdWVGcm9tSW50TGl0ZXJhbCA9IHZhbHVlID0+IHZhbHVlICYgMHhmZmZm
OworICAgICAgICAgICAgICAgICB0eXBlLmZvcm1hdFZhbHVlRnJvbVVpbnRMaXRlcmFsID0gdmFs
dWUgPT4gdmFsdWUgJiAweGZmZmY7CisgICAgICAgICAgICAgICAgIHR5cGUuYWxsVmFsdWVzID0g
ZnVuY3Rpb24qKCkgeworICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0g
MHhmZmZmOyArK2kpCisgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQge3ZhbHVlOiBpLCBu
YW1lOiBpfTsKKyAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICB9KTsKKwogICAgICAg
ICB0aGlzLl9tYXAuc2V0KAotICAgICAgICAgICAgIm5hdGl2ZSB0eXBlZGVmIGZsb2F0IiwKLSAg
ICAgICAgICAgIHR5cGUgPT4gewotICAgICAgICAgICAgICAgIHRoaXMuZmxvYXQgPSB0eXBlOwot
ICAgICAgICAgICAgICAgIHR5cGUuaXNQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICAgICAgICAg
IHR5cGUuc2l6ZSA9IDE7Ci0gICAgICAgICAgICAgICAgdHlwZS5pc0Zsb2F0aW5nID0gdHJ1ZTsK
LSAgICAgICAgICAgICAgICB0eXBlLmlzTnVtYmVyID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB0
eXBlLmNhblJlcHJlc2VudCA9IHZhbHVlID0+IGlzQml0d2lzZUVxdWl2YWxlbnQoTWF0aC5mcm91
bmQodmFsdWUpLCB2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgdHlwZS5wb3B1bGF0ZURlZmF1bHRW
YWx1ZSA9IChidWZmZXIsIG9mZnNldCkgPT4gYnVmZmVyLnNldChvZmZzZXQsIDApOwotICAgICAg
ICAgICAgICAgIHR5cGUuZm9ybWF0VmFsdWVGcm9tSW50TGl0ZXJhbCA9IHZhbHVlID0+IHZhbHVl
OwotICAgICAgICAgICAgICAgIHR5cGUuZm9ybWF0VmFsdWVGcm9tVWludExpdGVyYWwgPSB2YWx1
ZSA9PiB2YWx1ZTsKLSAgICAgICAgICAgICAgICB0eXBlLmZvcm1hdFZhbHVlRnJvbUZsb2F0TGl0
ZXJhbCA9IHZhbHVlID0+IE1hdGguZnJvdW5kKHZhbHVlKTsKLSAgICAgICAgICAgIH0pOworICAg
ICAgICAgICAgICJuYXRpdmUgdHlwZWRlZiB1aW50IiwKKyAgICAgICAgICAgICB0eXBlID0+IHsK
KyAgICAgICAgICAgICAgICAgdGhpcy51aW50ID0gdHlwZTsKKyAgICAgICAgICAgICAgICAgdHlw
ZS5pc1ByaW1pdGl2ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgIHR5cGUuaXNJbnQgPSB0cnVl
OworICAgICAgICAgICAgICAgICB0eXBlLmlzTnVtYmVyID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICAgdHlwZS5pc1NpZ25lZCA9IGZhbHNlOworICAgICAgICAgICAgICAgICB0eXBlLmNhblJlcHJl
c2VudCA9IHZhbHVlID0+IGlzQml0d2lzZUVxdWl2YWxlbnQodmFsdWUgPj4+IDAsIHZhbHVlKTsK
KyAgICAgICAgICAgICAgICAgdHlwZS5zaXplID0gMTsKKyAgICAgICAgICAgICAgICAgdHlwZS5k
ZWZhdWx0VmFsdWUgPSAwOworICAgICAgICAgICAgICAgICB0eXBlLmNyZWF0ZUxpdGVyYWwgPSAo
b3JpZ2luLCB2YWx1ZSkgPT4gSW50TGl0ZXJhbC53aXRoVHlwZShvcmlnaW4sIHZhbHVlID4+PiAw
LCB0eXBlKTsKKyAgICAgICAgICAgICAgICAgdHlwZS5zdWNjZXNzb3JWYWx1ZSA9IHZhbHVlID0+
ICh2YWx1ZSArIDEpID4+PiAwOworICAgICAgICAgICAgICAgICB0eXBlLnZhbHVlc0VxdWFsID0g
KGEsIGIpID0+IGEgPT09IGI7CisgICAgICAgICAgICAgICAgIHR5cGUucG9wdWxhdGVEZWZhdWx0
VmFsdWUgPSAoYnVmZmVyLCBvZmZzZXQpID0+IGJ1ZmZlci5zZXQob2Zmc2V0LCAwKTsKKyAgICAg
ICAgICAgICAgICAgdHlwZS5mb3JtYXRWYWx1ZUZyb21JbnRMaXRlcmFsID0gdmFsdWUgPT4gdmFs
dWUgPj4+IDA7CisgICAgICAgICAgICAgICAgIHR5cGUuZm9ybWF0VmFsdWVGcm9tVWludExpdGVy
YWwgPSB2YWx1ZSA9PiB2YWx1ZSA+Pj4gMDsKKyAgICAgICAgICAgICAgICAgdHlwZS5hbGxWYWx1
ZXMgPSBmdW5jdGlvbiooKSB7CisgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsg
aSA8PSAweGZmZmZmZmZmOyArK2kpCisgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQge3Zh
bHVlOiBpLCBuYW1lOiBpfTsKKyAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICB9KTsK
IAogICAgICAgICB0aGlzLl9tYXAuc2V0KAotICAgICAgICAgICAgIm5hdGl2ZSB0eXBlZGVmIGJv
b2wiLAotICAgICAgICAgICAgdHlwZSA9PiB7Ci0gICAgICAgICAgICAgICAgdGhpcy5ib29sID0g
dHlwZTsKLSAgICAgICAgICAgICAgICB0eXBlLmlzUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAg
ICAgICAgICB0eXBlLnNpemUgPSAxOwotICAgICAgICAgICAgICAgIHR5cGUucG9wdWxhdGVEZWZh
dWx0VmFsdWUgPSAoYnVmZmVyLCBvZmZzZXQpID0+IGJ1ZmZlci5zZXQob2Zmc2V0LCBmYWxzZSk7
Ci0gICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAibmF0aXZlIHR5cGVkZWYgY2hhciIsCisg
ICAgICAgICAgICAgdHlwZSA9PiB7CisgICAgICAgICAgICAgICAgIHRoaXMuY2hhciA9IHR5cGU7
CisgICAgICAgICAgICAgICAgIHR5cGUuaXNQcmltaXRpdmUgPSB0cnVlOworICAgICAgICAgICAg
ICAgICB0eXBlLmlzSW50ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5pc051bWJlciA9
IHRydWU7CisgICAgICAgICAgICAgICAgIHR5cGUuaXNTaWduZWQgPSB0cnVlOworICAgICAgICAg
ICAgICAgICB0eXBlLmNhblJlcHJlc2VudCA9IHZhbHVlID0+IGlzQml0d2lzZUVxdWl2YWxlbnQo
Y2FzdChJbnQ4QXJyYXksIHZhbHVlKSwgdmFsdWUpOworICAgICAgICAgICAgICAgICB0eXBlLnNp
emUgPSAxOworICAgICAgICAgICAgICAgICB0eXBlLmRlZmF1bHRWYWx1ZSA9IDA7CisgICAgICAg
ICAgICAgICAgIHR5cGUuY3JlYXRlTGl0ZXJhbCA9IChvcmlnaW4sIHZhbHVlKSA9PiBJbnRMaXRl
cmFsLndpdGhUeXBlKG9yaWdpbiwgY2FzdChJbnQ4QXJyYXksIHZhbHVlKSwgdHlwZSk7CisgICAg
ICAgICAgICAgICAgIHR5cGUuc3VjY2Vzc29yVmFsdWUgPSB2YWx1ZSA9PiBjYXN0KEludDhBcnJh
eSwgdmFsdWUgKyAxKTsKKyAgICAgICAgICAgICAgICAgdHlwZS52YWx1ZXNFcXVhbCA9IChhLCBi
KSA9PiBhID09PSBiOworICAgICAgICAgICAgICAgICB0eXBlLnBvcHVsYXRlRGVmYXVsdFZhbHVl
ID0gKGJ1ZmZlciwgb2Zmc2V0KSA9PiBidWZmZXIuc2V0KG9mZnNldCwgMCk7CisgICAgICAgICAg
ICAgICAgIHR5cGUuZm9ybWF0VmFsdWVGcm9tSW50TGl0ZXJhbCA9IHZhbHVlID0+IGNhc3QoSW50
OEFycmF5LCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgIHR5cGUuZm9ybWF0VmFsdWVGcm9tVWlu
dExpdGVyYWwgPSB2YWx1ZSA9PiBjYXN0KEludDhBcnJheSwgdmFsdWUpOworICAgICAgICAgICAg
ICAgICB0eXBlLmFsbFZhbHVlcyA9IGZ1bmN0aW9uKigpIHsKKyAgICAgICAgICAgICAgICAgICAg
IGZvciAobGV0IGkgPSAwOyBpIDw9IDB4ZmY7ICsraSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgIGxldCB2YWx1ZSA9IGNhc3QoSW50OEFycmF5LCBpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICB5aWVsZCB7dmFsdWU6IHZhbHVlLCBuYW1lOiB2YWx1ZX07CisgICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgfSk7CisKKyAgICAgICAg
dGhpcy5fbWFwLnNldCgKKyAgICAgICAgICAgICAibmF0aXZlIHR5cGVkZWYgc2hvcnQiLAorICAg
ICAgICAgICAgIHR5cGUgPT4geworICAgICAgICAgICAgICAgICB0aGlzLnNob3J0ID0gdHlwZTsK
KyAgICAgICAgICAgICAgICAgdHlwZS5pc1ByaW1pdGl2ZSA9IHRydWU7CisgICAgICAgICAgICAg
ICAgIHR5cGUuaXNJbnQgPSB0cnVlOworICAgICAgICAgICAgICAgICB0eXBlLmlzTnVtYmVyID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5pc1NpZ25lZCA9IHRydWU7CisgICAgICAgICAg
ICAgICAgIHR5cGUuY2FuUmVwcmVzZW50ID0gdmFsdWUgPT4gaXNCaXR3aXNlRXF1aXZhbGVudChj
YXN0KEludDE2QXJyYXksIHZhbHVlKSwgdmFsdWUpOworICAgICAgICAgICAgICAgICB0eXBlLnNp
emUgPSAxOworICAgICAgICAgICAgICAgICB0eXBlLmRlZmF1bHRWYWx1ZSA9IDA7CisgICAgICAg
ICAgICAgICAgIHR5cGUuY3JlYXRlTGl0ZXJhbCA9IChvcmlnaW4sIHZhbHVlKSA9PiBJbnRMaXRl
cmFsLndpdGhUeXBlKG9yaWdpbiwgY2FzdChJbnQxNkFycmF5LCB2YWx1ZSksIHR5cGUpOworICAg
ICAgICAgICAgICAgICB0eXBlLnN1Y2Nlc3NvclZhbHVlID0gdmFsdWUgPT4gY2FzdChJbnQxNkFy
cmF5LCB2YWx1ZSArIDEpOworICAgICAgICAgICAgICAgICB0eXBlLnZhbHVlc0VxdWFsID0gKGEs
IGIpID0+IGEgPT09IGI7CisgICAgICAgICAgICAgICAgIHR5cGUucG9wdWxhdGVEZWZhdWx0VmFs
dWUgPSAoYnVmZmVyLCBvZmZzZXQpID0+IGJ1ZmZlci5zZXQob2Zmc2V0LCAwKTsKKyAgICAgICAg
ICAgICAgICAgdHlwZS5mb3JtYXRWYWx1ZUZyb21JbnRMaXRlcmFsID0gdmFsdWUgPT4gY2FzdChJ
bnQxNkFycmF5LCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgIHR5cGUuZm9ybWF0VmFsdWVGcm9t
VWludExpdGVyYWwgPSB2YWx1ZSA9PiBjYXN0KEludDE2QXJyYXksIHZhbHVlKTsKKyAgICAgICAg
ICAgICAgICAgdHlwZS5hbGxWYWx1ZXMgPSBmdW5jdGlvbiooKSB7CisgICAgICAgICAgICAgICAg
ICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSAweGZmZmY7ICsraSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgIGxldCB2YWx1ZSA9IGNhc3QoSW50MTZBcnJheSwgaSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgeWllbGQge3ZhbHVlOiB2YWx1ZSwgbmFtZTogdmFsdWV9OworICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgIH0pOworCisg
ICAgICAgIHRoaXMuX21hcC5zZXQoCisgICAgICAgICAgICAgIm5hdGl2ZSB0eXBlZGVmIGludCIs
CisgICAgICAgICAgICAgdHlwZSA9PiB7CisgICAgICAgICAgICAgICAgIHRoaXMuaW50ID0gdHlw
ZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5pc1ByaW1pdGl2ZSA9IHRydWU7CisgICAgICAgICAg
ICAgICAgIHR5cGUuaXNJbnQgPSB0cnVlOworICAgICAgICAgICAgICAgICB0eXBlLmlzTnVtYmVy
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5pc1NpZ25lZCA9IHRydWU7CisgICAgICAg
ICAgICAgICAgIHR5cGUuY2FuUmVwcmVzZW50ID0gdmFsdWUgPT4gaXNCaXR3aXNlRXF1aXZhbGVu
dCh2YWx1ZSB8IDAsIHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgdHlwZS5zaXplID0gMTsKKyAg
ICAgICAgICAgICAgICAgdHlwZS5kZWZhdWx0VmFsdWUgPSAwOworICAgICAgICAgICAgICAgICB0
eXBlLmNyZWF0ZUxpdGVyYWwgPSAob3JpZ2luLCB2YWx1ZSkgPT4gSW50TGl0ZXJhbC53aXRoVHlw
ZShvcmlnaW4sIHZhbHVlIHwgMCwgdHlwZSk7CisgICAgICAgICAgICAgICAgIHR5cGUuc3VjY2Vz
c29yVmFsdWUgPSB2YWx1ZSA9PiAodmFsdWUgKyAxKSB8IDA7CisgICAgICAgICAgICAgICAgIHR5
cGUudmFsdWVzRXF1YWwgPSAoYSwgYikgPT4gYSA9PT0gYjsKKyAgICAgICAgICAgICAgICAgdHlw
ZS5wb3B1bGF0ZURlZmF1bHRWYWx1ZSA9IChidWZmZXIsIG9mZnNldCkgPT4gYnVmZmVyLnNldChv
ZmZzZXQsIDApOworICAgICAgICAgICAgICAgICB0eXBlLmZvcm1hdFZhbHVlRnJvbUludExpdGVy
YWwgPSB2YWx1ZSA9PiB2YWx1ZSB8IDA7CisgICAgICAgICAgICAgICAgIHR5cGUuZm9ybWF0VmFs
dWVGcm9tVWludExpdGVyYWwgPSB2YWx1ZSA9PiB2YWx1ZSB8IDA7CisgICAgICAgICAgICAgICAg
IHR5cGUuYWxsVmFsdWVzID0gZnVuY3Rpb24qKCkgeworICAgICAgICAgICAgICAgICAgICAgZm9y
IChsZXQgaSA9IDA7IGkgPD0gMHhmZmZmZmZmZjsgKytpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgbGV0IHZhbHVlID0gaSB8IDA7CisgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQg
e3ZhbHVlOiB2YWx1ZSwgbmFtZTogdmFsdWV9OworICAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICB9OworICAgICAgICAgICAgIH0pOworCisgICAgICAgICB0aGlzLl9tYXAu
c2V0KAorICAgICAgICAgICAgICJuYXRpdmUgdHlwZWRlZiBoYWxmIiwKKyAgICAgICAgICAgICB0
eXBlID0+IHsKKyAgICAgICAgICAgICAgICAgdGhpcy5oYWxmID0gdHlwZTsKKyAgICAgICAgICAg
ICAgICAgdHlwZS5pc1ByaW1pdGl2ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgIHR5cGUuc2l6
ZSA9IDE7CisgICAgICAgICAgICAgICAgIHR5cGUuaXNGbG9hdGluZyA9IHRydWU7CisgICAgICAg
ICAgICAgICAgIHR5cGUuaXNOdW1iZXIgPSB0cnVlOworICAgICAgICAgICAgICAgICB0eXBlLmNh
blJlcHJlc2VudCA9IHZhbHVlID0+IGlzQml0d2lzZUVxdWl2YWxlbnQoY2FzdFRvSGFsZih2YWx1
ZSksIHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgdHlwZS5wb3B1bGF0ZURlZmF1bHRWYWx1ZSA9
IChidWZmZXIsIG9mZnNldCkgPT4gYnVmZmVyLnNldChvZmZzZXQsIDApOworICAgICAgICAgICAg
ICAgICB0eXBlLmZvcm1hdFZhbHVlRnJvbUludExpdGVyYWwgPSB2YWx1ZSA9PiB2YWx1ZTsKKyAg
ICAgICAgICAgICAgICAgdHlwZS5mb3JtYXRWYWx1ZUZyb21VaW50TGl0ZXJhbCA9IHZhbHVlID0+
IHZhbHVlOworICAgICAgICAgICAgICAgICB0eXBlLmZvcm1hdFZhbHVlRnJvbUZsb2F0TGl0ZXJh
bCA9IHZhbHVlID0+IGNhc3RUb0hhbGYodmFsdWUpOworICAgICAgICAgICAgIH0pOworCisgICAg
ICAgICB0aGlzLl9tYXAuc2V0KAorICAgICAgICAgICAgICJuYXRpdmUgdHlwZWRlZiBmbG9hdCIs
CisgICAgICAgICAgICAgdHlwZSA9PiB7CisgICAgICAgICAgICAgICAgIHRoaXMuZmxvYXQgPSB0
eXBlOworICAgICAgICAgICAgICAgICB0eXBlLmlzUHJpbWl0aXZlID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICAgdHlwZS5zaXplID0gMTsKKyAgICAgICAgICAgICAgICAgdHlwZS5pc0Zsb2F0aW5n
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5pc051bWJlciA9IHRydWU7CisgICAgICAg
ICAgICAgICAgIHR5cGUuY2FuUmVwcmVzZW50ID0gdmFsdWUgPT4gaXNCaXR3aXNlRXF1aXZhbGVu
dChNYXRoLmZyb3VuZCh2YWx1ZSksIHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgdHlwZS5wb3B1
bGF0ZURlZmF1bHRWYWx1ZSA9IChidWZmZXIsIG9mZnNldCkgPT4gYnVmZmVyLnNldChvZmZzZXQs
IDApOworICAgICAgICAgICAgICAgICB0eXBlLmZvcm1hdFZhbHVlRnJvbUludExpdGVyYWwgPSB2
YWx1ZSA9PiB2YWx1ZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5mb3JtYXRWYWx1ZUZyb21VaW50
TGl0ZXJhbCA9IHZhbHVlID0+IHZhbHVlOworICAgICAgICAgICAgICAgICB0eXBlLmZvcm1hdFZh
bHVlRnJvbUZsb2F0TGl0ZXJhbCA9IHZhbHVlID0+IE1hdGguZnJvdW5kKHZhbHVlKTsKKyAgICAg
ICAgICAgICB9KTsKKworICAgICAgICB0aGlzLl9tYXAuc2V0KAorICAgICAgICAgICAgICJuYXRp
dmUgdHlwZWRlZiBhdG9taWNfaW50IiwKKyAgICAgICAgICAgICB0eXBlID0+IHsKKyAgICAgICAg
ICAgICAgICAgdGhpcy5hdG9taWNfaW50ID0gdHlwZTsKKyAgICAgICAgICAgICAgICAgLy8gRklY
TUU6IEZpZ3VyZSBvdXQgd2hhdCB0byBwdXQgaGVyZS4KKyAgICAgICAgICAgICB9KTsKKworICAg
ICAgICB0aGlzLl9tYXAuc2V0KAorICAgICAgICAgICAgICJuYXRpdmUgdHlwZWRlZiBhdG9taWNf
dWludCIsCisgICAgICAgICAgICAgdHlwZSA9PiB7CisgICAgICAgICAgICAgICAgIHRoaXMuYXRv
bWljX3VpbnQgPSB0eXBlOworICAgICAgICAgICAgICAgICAvLyBGSVhNRTogRmlndXJlIG91dCB3
aGF0IHRvIHB1dCBoZXJlLgorICAgICAgICAgICAgIH0pOwogCiAgICAgICAgIGZvciAobGV0IHZl
Y3RvclR5cGUgb2YgVmVjdG9yRWxlbWVudFR5cGVzKSB7Ci0gICAgICAgICAgICBmb3IgKGxldCB2
ZWN0b3JTaXplIG9mIFZlY3RvckVsZW1lbnRTaXplcykKLSAgICAgICAgICAgICAgICB0aGlzLl9t
YXAuc2V0KGBuYXRpdmUgdHlwZWRlZiB2ZWN0b3I8JHt2ZWN0b3JUeXBlfSwgJHt2ZWN0b3JTaXpl
fT5gLCB0eXBlID0+IHt9KTsKKyAgICAgICAgICAgIGZvciAobGV0IHZlY3RvclNpemUgb2YgVmVj
dG9yRWxlbWVudFNpemVzKSB7CisgICAgICAgICAgICAgICAgdGhpcy5fbWFwLnNldChgbmF0aXZl
IHR5cGVkZWYgdmVjdG9yPCR7dmVjdG9yVHlwZX0sICR7dmVjdG9yU2l6ZX0+YCwgdHlwZSA9PiB7
CisgICAgICAgICAgICAgICAgICAgIHRoaXNbYHZlY3Rvcjwke3ZlY3RvclR5cGV9LCAke3ZlY3Rv
clNpemV9PmBdID0gdHlwZTsKKyAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IEZpZ3VyZSBv
dXQgd2hhdCB0byBwdXQgaGVyZS4KKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0K
ICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAg
ICAgIm5hdGl2ZSBvcGVyYXRvciBpbnQodWludCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAg
ICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbdmFsdWVdKSA9PiBFUHRyLmJv
eCh2YWx1ZS5sb2FkVmFsdWUoKSB8IDApOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAg
ICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIG9wZXJhdG9yIGludCh1
Y2hhcikiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBs
ZW1lbnRhdGlvbiA9IChbdmFsdWVdKSA9PiBFUHRyLmJveCh2YWx1ZS5sb2FkVmFsdWUoKSB8IDAp
OwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAg
ICAgICAgICAgICAibmF0aXZlIG9wZXJhdG9yIGludChmbG9hdCkiLAogICAgICAgICAgICAgZnVu
YyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbdmFsdWVdKSA9
PiBFUHRyLmJveCh2YWx1ZS5sb2FkVmFsdWUoKSB8IDApOwogICAgICAgICAgICAgfSk7Ci0gICAg
ICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIG9wZXJh
dG9yIHVpbnQoaW50KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBm
dW5jLmltcGxlbWVudGF0aW9uID0gKFt2YWx1ZV0pID0+IEVQdHIuYm94KHZhbHVlLmxvYWRWYWx1
ZSgpID4+PiAwKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9t
YXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBvcGVyYXRvciB1aW50KHVjaGFyKSIsCiAgICAg
ICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0g
KFt2YWx1ZV0pID0+IEVQdHIuYm94KHZhbHVlLmxvYWRWYWx1ZSgpID4+PiAwKTsKICAgICAgICAg
ICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAg
Im5hdGl2ZSBvcGVyYXRvciB1aW50KGZsb2F0KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAg
ICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFt2YWx1ZV0pID0+IEVQdHIuYm94
KHZhbHVlLmxvYWRWYWx1ZSgpID4+PiAwKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwog
ICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBvcGVyYXRvciB1Y2hh
cihpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1w
bGVtZW50YXRpb24gPSAoW3ZhbHVlXSkgPT4gRVB0ci5ib3godmFsdWUubG9hZFZhbHVlKCkgJiAw
eGZmKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0
KAogICAgICAgICAgICAgIm5hdGl2ZSBvcGVyYXRvciB1Y2hhcih1aW50KSIsCiAgICAgICAgICAg
ICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFt2YWx1
ZV0pID0+IEVQdHIuYm94KHZhbHVlLmxvYWRWYWx1ZSgpICYgMHhmZik7CiAgICAgICAgICAgICB9
KTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRp
dmUgb3BlcmF0b3IgdWNoYXIoZmxvYXQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAg
ICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW3ZhbHVlXSkgPT4gRVB0ci5ib3godmFs
dWUubG9hZFZhbHVlKCkgJiAweGZmKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAg
ICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBvcGVyYXRvciBmbG9hdChp
bnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVt
ZW50YXRpb24gPSAoW3ZhbHVlXSkgPT4gRVB0ci5ib3goTWF0aC5mcm91bmQodmFsdWUubG9hZFZh
bHVlKCkpKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAu
c2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBvcGVyYXRvciBmbG9hdCh1aW50KSIsCiAgICAgICAg
ICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFt2
YWx1ZV0pID0+IEVQdHIuYm94KE1hdGguZnJvdW5kKHZhbHVlLmxvYWRWYWx1ZSgpKSk7CiAgICAg
ICAgICAgICB9KTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAg
ICAgICJuYXRpdmUgb3BlcmF0b3IgZmxvYXQodWNoYXIpIiwKICAgICAgICAgICAgIGZ1bmMgPT4g
ewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW3ZhbHVlXSkgPT4gRVB0
ci5ib3goTWF0aC5mcm91bmQodmFsdWUubG9hZFZhbHVlKCkpKTsKICAgICAgICAgICAgIH0pOwot
ICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBp
bnQgb3BlcmF0b3IrKGludCxpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAg
ICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAg
ICAgICAgICAgICAgRVB0ci5ib3goKGxlZnQubG9hZFZhbHVlKCkgKyByaWdodC5sb2FkVmFsdWUo
KSkgfCAwKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAu
c2V0KAogICAgICAgICAgICAgIm5hdGl2ZSB1aW50IG9wZXJhdG9yKyh1aW50LHVpbnQpIiwKICAg
ICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24g
PSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3goKGxlZnQu
bG9hZFZhbHVlKCkgKyByaWdodC5sb2FkVmFsdWUoKSkgPj4+IDApOwogICAgICAgICAgICAgfSk7
Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZl
IGZsb2F0IG9wZXJhdG9yKyhmbG9hdCxmbG9hdCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAg
ICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9Pgog
ICAgICAgICAgICAgICAgICAgICBFUHRyLmJveChNYXRoLmZyb3VuZChsZWZ0LmxvYWRWYWx1ZSgp
ICsgcmlnaHQubG9hZFZhbHVlKCkpKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAg
ICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBpbnQgb3BlcmF0b3ItKGlu
dCxpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1w
bGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0
ci5ib3goKGxlZnQubG9hZFZhbHVlKCkgLSByaWdodC5sb2FkVmFsdWUoKSkgfCAwKTsKICAgICAg
ICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAg
ICAgIm5hdGl2ZSB1aW50IG9wZXJhdG9yLSh1aW50LHVpbnQpIiwKICAgICAgICAgICAgIGZ1bmMg
PT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0
XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3goKGxlZnQubG9hZFZhbHVlKCkgLSBy
aWdodC5sb2FkVmFsdWUoKSkgPj4+IDApOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAg
ICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIGZsb2F0IG9wZXJhdG9y
LShmbG9hdCxmbG9hdCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAg
ZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PgogICAgICAgICAgICAgICAg
ICAgICBFUHRyLmJveChNYXRoLmZyb3VuZChsZWZ0LmxvYWRWYWx1ZSgpIC0gcmlnaHQubG9hZFZh
bHVlKCkpKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAu
c2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBpbnQgb3BlcmF0b3IqKGludCxpbnQpIiwKICAgICAg
ICAgICAgIGZ1bmMgPT4gewpAQCAtMjc2LDIyOSArNDM5LDIyOSBAQCBjbGFzcyBJbnRyaW5zaWNz
IHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVQdHIuYm94KChsZWZ0LmxvYWRWYWx1ZSgp
ICogcmlnaHQubG9hZFZhbHVlKCkpIHwgMCk7CiAgICAgICAgICAgICAgICAgfTsKICAgICAgICAg
ICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAg
Im5hdGl2ZSB1aW50IG9wZXJhdG9yKih1aW50LHVpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4g
ewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkg
PT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3goKGxlZnQubG9hZFZhbHVlKCkgKiByaWdo
dC5sb2FkVmFsdWUoKSkgPj4+IDApOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAg
ICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIGZsb2F0IG9wZXJhdG9yKihm
bG9hdCxmbG9hdCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVu
Yy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PgogICAgICAgICAgICAgICAgICAg
ICBFUHRyLmJveChNYXRoLmZyb3VuZChsZWZ0LmxvYWRWYWx1ZSgpICogcmlnaHQubG9hZFZhbHVl
KCkpKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0
KAogICAgICAgICAgICAgIm5hdGl2ZSBpbnQgb3BlcmF0b3IvKGludCxpbnQpIiwKICAgICAgICAg
ICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xl
ZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3goKGxlZnQubG9hZFZh
bHVlKCkgLyByaWdodC5sb2FkVmFsdWUoKSkgfCAwKTsKICAgICAgICAgICAgIH0pOwotICAgICAg
ICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSB1aW50IG9w
ZXJhdG9yLyh1aW50LHVpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAg
ICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAg
ICAgICAgICAgRVB0ci5ib3goKGxlZnQubG9hZFZhbHVlKCkgLyByaWdodC5sb2FkVmFsdWUoKSkg
Pj4+IDApOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5z
ZXQoCiAgICAgICAgICAgICAibmF0aXZlIGludCBvcGVyYXRvciYoaW50LGludCkiLAogICAgICAg
ICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChb
bGVmdCwgcmlnaHRdKSA9PgogICAgICAgICAgICAgICAgICAgICBFUHRyLmJveChsZWZ0LmxvYWRW
YWx1ZSgpICYgcmlnaHQubG9hZFZhbHVlKCkpOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAor
CiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIHVpbnQgb3BlcmF0
b3ImKHVpbnQsdWludCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAg
ZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PgogICAgICAgICAgICAgICAg
ICAgICBFUHRyLmJveCgobGVmdC5sb2FkVmFsdWUoKSAmIHJpZ2h0LmxvYWRWYWx1ZSgpKSA+Pj4g
MCk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgK
ICAgICAgICAgICAgICJuYXRpdmUgaW50IG9wZXJhdG9yfChpbnQsaW50KSIsCiAgICAgICAgICAg
ICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0
LCByaWdodF0pID0+CiAgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KGxlZnQubG9hZFZhbHVl
KCkgfCByaWdodC5sb2FkVmFsdWUoKSk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgCisKICAg
ICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUgdWludCBvcGVyYXRvcnwo
dWludCx1aW50KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5j
LmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+CiAgICAgICAgICAgICAgICAgICAg
IEVQdHIuYm94KChsZWZ0LmxvYWRWYWx1ZSgpIHwgcmlnaHQubG9hZFZhbHVlKCkpID4+PiAwKTsK
ICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAg
ICAgICAgICAgIm5hdGl2ZSBpbnQgb3BlcmF0b3JeKGludCxpbnQpIiwKICAgICAgICAgICAgIGZ1
bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJp
Z2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3gobGVmdC5sb2FkVmFsdWUoKSBe
IHJpZ2h0LmxvYWRWYWx1ZSgpKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAg
ICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSB1aW50IG9wZXJhdG9yXih1aW50
LHVpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1w
bGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0
ci5ib3goKGxlZnQubG9hZFZhbHVlKCkgXiByaWdodC5sb2FkVmFsdWUoKSkgPj4+IDApOwogICAg
ICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAg
ICAgICAibmF0aXZlIGludCBvcGVyYXRvcjw8KGludCx1aW50KSIsCiAgICAgICAgICAgICBmdW5j
ID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdo
dF0pID0+CiAgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KGxlZnQubG9hZFZhbHVlKCkgPDwg
cmlnaHQubG9hZFZhbHVlKCkpOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAg
IHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIHVpbnQgb3BlcmF0b3I8PCh1aW50
LHVpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1w
bGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0
ci5ib3goKGxlZnQubG9hZFZhbHVlKCkgPDwgcmlnaHQubG9hZFZhbHVlKCkpID4+PiAwKTsKICAg
ICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAg
ICAgICAgIm5hdGl2ZSBpbnQgb3BlcmF0b3I+PihpbnQsdWludCkiLAogICAgICAgICAgICAgZnVu
YyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmln
aHRdKSA9PgogICAgICAgICAgICAgICAgICAgICBFUHRyLmJveChsZWZ0LmxvYWRWYWx1ZSgpID4+
IHJpZ2h0LmxvYWRWYWx1ZSgpKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAg
ICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSB1aW50IG9wZXJhdG9yPj4odWlu
dCx1aW50KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmlt
cGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+CiAgICAgICAgICAgICAgICAgICAgIEVQ
dHIuYm94KGxlZnQubG9hZFZhbHVlKCkgPj4+IHJpZ2h0LmxvYWRWYWx1ZSgpKTsKICAgICAgICAg
ICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAg
Im5hdGl2ZSBpbnQgb3BlcmF0b3J+KGludCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAg
ICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbdmFsdWVdKSA9PiBFUHRyLmJveCh+
dmFsdWUubG9hZFZhbHVlKCkpOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAg
IHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIHVpbnQgb3BlcmF0b3J+KHVpbnQp
IiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50
YXRpb24gPSAoW3ZhbHVlXSkgPT4gRVB0ci5ib3goKH52YWx1ZS5sb2FkVmFsdWUoKSkgPj4+IDAp
OwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAg
ICAgICAgICAgICAibmF0aXZlIGZsb2F0IG9wZXJhdG9yLyhmbG9hdCxmbG9hdCkiLAogICAgICAg
ICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChb
bGVmdCwgcmlnaHRdKSA9PgogICAgICAgICAgICAgICAgICAgICBFUHRyLmJveChNYXRoLmZyb3Vu
ZChsZWZ0LmxvYWRWYWx1ZSgpIC8gcmlnaHQubG9hZFZhbHVlKCkpKTsKICAgICAgICAgICAgIH0p
OwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2
ZSBib29sIG9wZXJhdG9yPT0oaW50LGludCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAg
ICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PgogICAg
ICAgICAgICAgICAgICAgICBFUHRyLmJveChsZWZ0LmxvYWRWYWx1ZSgpID09IHJpZ2h0LmxvYWRW
YWx1ZSgpKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAu
c2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBib29sIG9wZXJhdG9yPT0odWludCx1aW50KSIsCiAg
ICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9u
ID0gKFtsZWZ0LCByaWdodF0pID0+CiAgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KGxlZnQu
bG9hZFZhbHVlKCkgPT0gcmlnaHQubG9hZFZhbHVlKCkpOwogICAgICAgICAgICAgfSk7Ci0gICAg
ICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIGJvb2wg
b3BlcmF0b3I9PShib29sLGJvb2wpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAg
ICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAg
ICAgICAgICAgICAgRVB0ci5ib3gobGVmdC5sb2FkVmFsdWUoKSA9PSByaWdodC5sb2FkVmFsdWUo
KSk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgK
ICAgICAgICAgICAgICJuYXRpdmUgYm9vbCBvcGVyYXRvcj09KGZsb2F0LGZsb2F0KSIsCiAgICAg
ICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0g
KFtsZWZ0LCByaWdodF0pID0+CiAgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KGxlZnQubG9h
ZFZhbHVlKCkgPT0gcmlnaHQubG9hZFZhbHVlKCkpOwogICAgICAgICAgICAgfSk7Ci0gICAgICAg
IAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIGJvb2wgb3Bl
cmF0b3I8KGludCxpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAg
IGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAg
ICAgICAgRVB0ci5ib3gobGVmdC5sb2FkVmFsdWUoKSA8IHJpZ2h0LmxvYWRWYWx1ZSgpKTsKICAg
ICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAg
ICAgICAgIm5hdGl2ZSBib29sIG9wZXJhdG9yPCh1aW50LHVpbnQpIiwKICAgICAgICAgICAgIGZ1
bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJp
Z2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3gobGVmdC5sb2FkVmFsdWUoKSA8
IHJpZ2h0LmxvYWRWYWx1ZSgpKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAg
ICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBib29sIG9wZXJhdG9yPChmbG9h
dCxmbG9hdCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5p
bXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PgogICAgICAgICAgICAgICAgICAgICBF
UHRyLmJveChsZWZ0LmxvYWRWYWx1ZSgpIDwgcmlnaHQubG9hZFZhbHVlKCkpOwogICAgICAgICAg
ICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAi
bmF0aXZlIGJvb2wgb3BlcmF0b3I8PShpbnQsaW50KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsK
ICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+
CiAgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KGxlZnQubG9hZFZhbHVlKCkgPD0gcmlnaHQu
bG9hZFZhbHVlKCkpOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMu
X21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIGJvb2wgb3BlcmF0b3I8PSh1aW50LHVpbnQp
IiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50
YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3go
bGVmdC5sb2FkVmFsdWUoKSA8PSByaWdodC5sb2FkVmFsdWUoKSk7CiAgICAgICAgICAgICB9KTsK
LSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUg
Ym9vbCBvcGVyYXRvcjw9KGZsb2F0LGZsb2F0KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAg
ICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+CiAg
ICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KGxlZnQubG9hZFZhbHVlKCkgPD0gcmlnaHQubG9h
ZFZhbHVlKCkpOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21h
cC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIGJvb2wgb3BlcmF0b3I+KGludCxpbnQpIiwKICAg
ICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24g
PSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3gobGVmdC5s
b2FkVmFsdWUoKSA+IHJpZ2h0LmxvYWRWYWx1ZSgpKTsKICAgICAgICAgICAgIH0pOwotICAgICAg
ICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBib29sIG9w
ZXJhdG9yPih1aW50LHVpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAg
ICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAg
ICAgICAgICAgRVB0ci5ib3gobGVmdC5sb2FkVmFsdWUoKSA+IHJpZ2h0LmxvYWRWYWx1ZSgpKTsK
ICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAg
ICAgICAgICAgIm5hdGl2ZSBib29sIG9wZXJhdG9yPihmbG9hdCxmbG9hdCkiLAogICAgICAgICAg
ICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbbGVm
dCwgcmlnaHRdKSA9PgogICAgICAgICAgICAgICAgICAgICBFUHRyLmJveChsZWZ0LmxvYWRWYWx1
ZSgpID4gcmlnaHQubG9hZFZhbHVlKCkpOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAg
ICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIGJvb2wgb3BlcmF0b3I+
PShpbnQsaW50KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5j
LmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+CiAgICAgICAgICAgICAgICAgICAg
IEVQdHIuYm94KGxlZnQubG9hZFZhbHVlKCkgPj0gcmlnaHQubG9hZFZhbHVlKCkpOwogICAgICAg
ICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAg
ICAibmF0aXZlIGJvb2wgb3BlcmF0b3I+PSh1aW50LHVpbnQpIiwKICAgICAgICAgICAgIGZ1bmMg
PT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0
XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3gobGVmdC5sb2FkVmFsdWUoKSA+PSBy
aWdodC5sb2FkVmFsdWUoKSk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgCisKICAgICAgICAg
dGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUgYm9vbCBvcGVyYXRvcj49KGZsb2F0
LGZsb2F0KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKQEAgLTUzOCw3ICs3MDEsNyBAQCBjbGFz
cyBJbnRyaW5zaWNzIHsKICAgICAgICAgZm9yIChsZXQgc2V0dGVyIG9mIEJ1aWx0aW5WZWN0b3JT
ZXR0ZXIuZnVuY3Rpb25zKCkpCiAgICAgICAgICAgICB0aGlzLl9tYXAuc2V0KHNldHRlci50b1N0
cmluZygpLCBmdW5jID0+IHNldHRlci5pbnN0YW50aWF0ZUltcGxlbWVudGF0aW9uKGZ1bmMpKTsK
ICAgICB9Ci0gICAgCisKICAgICBhZGQodGhpbmcpCiAgICAgewogICAgICAgICBsZXQgaW50cmlu
c2ljID0gdGhpcy5fbWFwLmdldCh0aGluZy50b1N0cmluZygpKTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05hbWVDb250ZXh0LmpzIGIvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvTmFtZUNvbnRleHQuanMKaW5kZXggMWJhYjNmYzU2MDI2MDEwNzdiM2Zh
ODg1YTYwNTRhYjg2MGIwYTE5My4uYjExMWVhZjI3MjcwNjJjMDc5OTA2OTQzYzcwYTRhNzZlYjA4
YmMxNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmFtZUNvbnRl
eHQuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmFtZUNvbnRleHQuanMK
QEAgLTY5LDExICs2OSwyNiBAQCBjbGFzcyBOYW1lQ29udGV4dCB7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIAotICAgICAgICBpZiAodGhpcy5fbWFwLmhhcyh0aGluZy5uYW1lKSkK
LSAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9yKHRoaW5nLm9yaWdpbi5vcmlnaW5TdHJp
bmcsICJEdXBsaWNhdGUgbmFtZTogIiArIHRoaW5nLm5hbWUpOworICAgICAgICBpZiAodGhpbmcu
a2luZCA9PSBUeXBlKSB7CisgICAgICAgICAgICB0aGlzLl9zZXQuYWRkKHRoaW5nKTsKKyAgICAg
ICAgICAgIGlmICh0aGluZy5uYW1lID09ICJ2ZWN0b3IiKSB7CisgICAgICAgICAgICAgICAgbGV0
IGFycmF5ID0gdGhpcy5fbWFwLmdldCh0aGluZy5uYW1lKTsKKyAgICAgICAgICAgICAgICBpZiAo
IWFycmF5KSB7CisgICAgICAgICAgICAgICAgICAgIGFycmF5ID0gW107CisgICAgICAgICAgICAg
ICAgICAgIGFycmF5LmtpbmQgPSBUeXBlOworICAgICAgICAgICAgICAgICAgICB0aGlzLl9tYXAu
c2V0KHRoaW5nLm5hbWUsIGFycmF5KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgaWYgKGFycmF5LmtpbmQgIT0gVHlwZSkKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3
IFdUeXBlRXJyb3IodGhpbmcub3JpZ2luLm9yaWdpblN0cmluZywgIkNhbm5vdCByZXVzZSB0eXBl
IG5hbWUgZm9yIGZ1bmN0aW9uOiAiICsgdGhpbmcubmFtZSk7CisgICAgICAgICAgICAgICAgYXJy
YXkucHVzaCh0aGluZyk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5fbWFwLmhhcyh0aGluZy5uYW1lKSkKKyAg
ICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3IodGhpbmcub3JpZ2luLm9yaWdp
blN0cmluZywgIkR1cGxpY2F0ZSBuYW1lOiAiICsgdGhpbmcubmFtZSk7CisgICAgICAgICAgICAg
ICAgdGhpcy5fbWFwLnNldCh0aGluZy5uYW1lLCB0aGluZyk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KIAotICAgICAgICB0aGlzLl9zZXQuYWRkKHRoaW5nKTsKLSAgICAgICAgdGhpcy5fbWFw
LnNldCh0aGluZy5uYW1lLCB0aGluZyk7CiAgICAgfQogICAgIAogICAgIGdldChraW5kLCBuYW1l
KQpAQCAtMTAyLDYgKzExNywxMCBAQCBjbGFzcyBOYW1lQ29udGV4dCB7CiAgICAgICAgICAgICBm
b3IgKGxldCBmdW5jIG9mIHRoaW5nKQogICAgICAgICAgICAgICAgIHlpZWxkIGZ1bmM7CiAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0gZWxzZSBpZiAodGhpbmcua2luZCA9PT0gVHlwZSAm
JiAodGhpbmcgaW5zdGFuY2VvZiBBcnJheSkpIHsKKyAgICAgICAgICAgIGZvciAobGV0IHR5cGUg
b2YgdGhpbmcpCisgICAgICAgICAgICAgICAgeWllbGQgdHlwZTsKKyAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogICAgICAgICB5aWVsZCB0aGluZzsKICAgICB9CkBAIC0xNjMsOCArMTgy
LDggQEAgY2xhc3MgTmFtZUNvbnRleHQgewogICAgIHsKICAgICAgICAgZm9yIChsZXQgdmFsdWUg
b2YgdGhpcy5fbWFwLnZhbHVlcygpKSB7CiAgICAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2Vv
ZiBBcnJheSkgewotICAgICAgICAgICAgICAgIGZvciAobGV0IGZ1bmMgb2YgdmFsdWUpCi0gICAg
ICAgICAgICAgICAgICAgIHlpZWxkIGZ1bmM7CisgICAgICAgICAgICAgICAgZm9yIChsZXQgdGhp
bmcgb2YgdmFsdWUpCisgICAgICAgICAgICAgICAgICAgIHlpZWxkIHRoaW5nOwogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgeWllbGQgdmFsdWU7
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYW1lUmVzb2x2ZXIu
anMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYW1lUmVzb2x2ZXIuanMKaW5kZXgg
YTJhZjFkOTMzNDY3MjUxNzI2YzQyN2ZhMDY0YjZkNzRjOTIzNTU3NS4uZmQ2MTMyYjYwNjMyODJi
OWU5ZGU5OWIxM2I2ZDFhY2I3YWE5MmQ2ZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvTmFtZVJlc29sdmVyLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL05hbWVSZXNvbHZlci5qcwpAQCAtMTI1LDcgKzEyNSwxMCBAQCBjbGFzcyBOYW1lUmVz
b2x2ZXIgZXh0ZW5kcyBWaXNpdG9yIHsKICAgICAgICAgICAgIHR5cGUgPSB0aGlzLl9uYW1lQ29u
dGV4dC5nZXQoVHlwZSwgbm9kZS5uYW1lKTsKICAgICAgICAgICAgIGlmICghdHlwZSkKICAgICAg
ICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihub2RlLm9yaWdpbi5vcmlnaW5TdHJpbmcs
ICJDb3VsZCBub3QgZmluZCB0eXBlIG5hbWVkICIgKyBub2RlLm5hbWUpOwotICAgICAgICAgICAg
bm9kZS50eXBlID0gdHlwZTsKKyAgICAgICAgICAgIGlmICh0eXBlIGluc3RhbmNlb2YgQXJyYXkp
CisgICAgICAgICAgICAgICAgbm9kZS5wb3NzaWJsZU92ZXJsb2FkcyA9IHR5cGU7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgbm9kZS50eXBlID0gdHlwZTsKICAgICAgICAgfQog
ICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05h
dGl2ZVR5cGUuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYXRpdmVUeXBlLmpz
CmluZGV4IGUyZDg1MWNiY2NiYTNhOTcyMzRjN2JkMzkyOTA3ODI5Y2E5ZTA1ZjIuLjIzODFiNWE2
YjBiMDEwZTBmZGQ0ZGM1MzU1MGE4ZWE2YjRmODM0N2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL05hdGl2ZVR5cGUuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvTmF0aXZlVHlwZS5qcwpAQCAtMjUsMTEgKzI1LDE0IEBACiAidXNlIHN0cmlj
dCI7CiAKIGNsYXNzIE5hdGl2ZVR5cGUgZXh0ZW5kcyBUeXBlIHsKLSAgICBjb25zdHJ1Y3Rvcihv
cmlnaW4sIG5hbWUpCisgICAgY29uc3RydWN0b3Iob3JpZ2luLCBuYW1lLCB0eXBlQXJndW1lbnRz
KQogICAgIHsKKyAgICAgICAgaWYgKCEodHlwZUFyZ3VtZW50cyBpbnN0YW5jZW9mIEFycmF5KSkK
KyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigidHlwZSBwYXJhbWV0ZXJzIG5vdCBhcnJheTog
IiArIHR5cGVBcmd1bWVudHMpOwogICAgICAgICBzdXBlcigpOwogICAgICAgICB0aGlzLl9vcmln
aW4gPSBvcmlnaW47CiAgICAgICAgIHRoaXMuX25hbWUgPSBuYW1lOworICAgICAgICB0aGlzLl90
eXBlQXJndW1lbnRzID0gdHlwZUFyZ3VtZW50czsKICAgICAgICAgdGhpcy5faXNOdW1iZXIgPSBm
YWxzZTsKICAgICAgICAgdGhpcy5faXNJbnQgPSBmYWxzZTsKICAgICAgICAgdGhpcy5faXNGbG9h
dGluZyA9IGZhbHNlOwpAQCAtMzgsNiArNDEsNyBAQCBjbGFzcyBOYXRpdmVUeXBlIGV4dGVuZHMg
VHlwZSB7CiAgICAgCiAgICAgZ2V0IG9yaWdpbigpIHsgcmV0dXJuIHRoaXMuX29yaWdpbjsgfQog
ICAgIGdldCBuYW1lKCkgeyByZXR1cm4gdGhpcy5fbmFtZTsgfQorICAgIGdldCB0eXBlQXJndW1l
bnRzKCkgeyByZXR1cm4gdGhpcy5fdHlwZUFyZ3VtZW50czsgfQogICAgIGdldCBpc05hdGl2ZSgp
IHsgcmV0dXJuIHRydWU7IH0KICAgICAKICAgICAvLyBXZSBsZXQgSW50cmluc2ljcy5qcyBzZXQg
dGhlc2UgYXMgaXQgbGlrZXMuCkBAIC01MiwxOSArNTYsMTggQEAgY2xhc3MgTmF0aXZlVHlwZSBl
eHRlbmRzIFR5cGUgewogICAgIAogICAgIHRvU3RyaW5nKCkKICAgICB7Ci0gICAgICAgIHJldHVy
biBgbmF0aXZlIHR5cGVkZWYgJHt0aGlzLm5hbWV9YDsKKyAgICAgICAgbGV0IHJlc3VsdCA9IGBu
YXRpdmUgdHlwZWRlZiAke3RoaXMubmFtZX1gOworICAgICAgICBpZiAodGhpcy50eXBlQXJndW1l
bnRzLmxlbmd0aCkKKyAgICAgICAgICAgIHJlc3VsdCArPSAiPCIgKyB0aGlzLnR5cGVBcmd1bWVu
dHMuam9pbigiLCIpICsgIj4iOworICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAK
ICAgICBzdGF0aWMgY3JlYXRlKG9yaWdpbiwgbmFtZSwgdHlwZUFyZ3VtZW50cykKICAgICB7Ci0g
ICAgICAgIC8vIEZJWE1FOiBGb3IgbmF0aXZlIHR5cGVzIGxpa2UgVGV4dHVyZTFEIHRoaXMgc2hv
dWxkIHJlc29sdmUgdGhlIHR5cGUgdG8gc29tZXRoaW5nIGNvbmNyZXRlIGJ5IGNoYW5naW5nIHRo
ZSB0eXBlIG5hbWUuCi0gICAgICAgIGlmICh0eXBlQXJndW1lbnRzLmxlbmd0aCkKLSAgICAgICAg
ICAgIHRocm93IG5ldyBXVHlwZUVycm9yKG9yaWdpbi5vcmlnaW5TdHJpbmcsIGAke25hbWV9PCR7
dHlwZUFyZ3VtZW50cy5qb2luKCIsIil9PjogU3VwcG9ydCBmb3IgbmF0aXZlIHR5cGVzIHdpdGgg
dHlwZSBhcmd1bWVudHMgaXMgY3VycmVudGx5IHVuaW1wbGVtZW50ZWQuYCk7CisgICAgICAgIGlm
IChuYW1lID09ICJ2ZWN0b3IiKQorICAgICAgICAgICAgcmV0dXJuIG5ldyBWZWN0b3JUeXBlKG9y
aWdpbiwgbmFtZSwgdHlwZUFyZ3VtZW50cyk7CiAKLSAgICAgICAgaWYgKGFsbFZlY3RvclR5cGVO
YW1lcygpLmluZGV4T2YobmFtZSkgPiAtMSkKLSAgICAgICAgICAgIHJldHVybiBuZXcgVmVjdG9y
VHlwZShvcmlnaW4sIG5hbWUpOwotCi0gICAgICAgIHJldHVybiBuZXcgTmF0aXZlVHlwZShvcmln
aW4sIG5hbWUpOworICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZVR5cGUob3JpZ2luLCBuYW1lLCB0
eXBlQXJndW1lbnRzKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL1BhcnNlLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFy
c2UuanMKaW5kZXggYzRhZTlkZTdmZGU4NTYyOTY5MjYwYzE0NjljMjJiNTg2ZGU3NmRmOS4uOWEy
YjIwMTVmZDM1MjRiZWE5ZDYwNGM1MTFjMjdlZmVmNmNjNTZlOSAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFyc2UuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvUGFyc2UuanMKQEAgLTMyNywxMCArMzI3LDEyIEBAIGZ1bmN0aW9uIHBhcnNl
KHByb2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwgbGluZU51bWJlck9mZnNldCwgdGV4dCkKICAg
ICBmdW5jdGlvbiBpc0NhbGxFeHByZXNzaW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiBsZXhl
ci50ZXN0U2NvcGUoKCkgPT4gewotICAgICAgICAgICAgY29uc3VtZUtpbmQoImlkZW50aWZpZXIi
KTsKLSAgICAgICAgICAgIHBhcnNlVHlwZUFyZ3VtZW50cygpOwotICAgICAgICAgICAgY29uc3Vt
ZSgiKCIpOwotICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBjb25zdW1lS2luZCgiaWRlbnRp
ZmllciIpOworICAgICAgICAgICAgICAgIGNvbnN1bWUoIigiKTsKKyAgICAgICAgICAgIH0pIHx8
IGxleGVyLnRlc3RTY29wZSgoKSA9PiB7CisgICAgICAgICAgICAgICAgcGFyc2VUeXBlKCk7Cisg
ICAgICAgICAgICAgICAgY29uc3VtZSgiKCIpOworICAgICAgICAgICAgfSk7CiAgICAgfQogICAg
IAogICAgIGZ1bmN0aW9uIGVtaXRJbmNyZW1lbnQodG9rZW4sIG9sZCwgZXh0cmFBcmcpCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9Qcm9ncmFtLmpzIGIvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUHJvZ3JhbS5qcwppbmRleCAwNjYyNWQ5OGZjNDFlNzRj
OTNkZWNlODBiNzBjZTU1YzdhZjc0ZGQ1Li4xMTE2YzRmNTc3NTYyMjE1ZmRkNzQyOGEzMTc1Nzlh
OTI5MTY1NDE0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9Qcm9n
cmFtLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Byb2dyYW0uanMKQEAg
LTQ4LDE5ICs0OCwyNSBAQCBjbGFzcyBQcm9ncmFtIGV4dGVuZHMgTm9kZSB7CiAgICAgICAgIGlm
IChzdGF0ZW1lbnQgaW5zdGFuY2VvZiBGdW5jKSB7CiAgICAgICAgICAgICBsZXQgYXJyYXkgPSB0
aGlzLl9mdW5jdGlvbnMuZ2V0KHN0YXRlbWVudC5uYW1lKTsKICAgICAgICAgICAgIGlmICghYXJy
YXkpCi0gICAgICAgICAgICAgICAgdGhpcy5fZnVuY3Rpb25zLnNldChzdGF0ZW1lbnQubmFtZSwg
YXJyYXkgPSBbXSk7CisgICAgICAgICAgICAgICAgdGhpcy5mdW5jdGlvbnMuc2V0KHN0YXRlbWVu
dC5uYW1lLCBhcnJheSA9IFtdKTsKICAgICAgICAgICAgIGFycmF5LnB1c2goc3RhdGVtZW50KTsK
LSAgICAgICAgfSBlbHNlIGlmIChzdGF0ZW1lbnQgaW5zdGFuY2VvZiBUeXBlKQotICAgICAgICAg
ICAgdGhpcy5fdHlwZXMuc2V0KHN0YXRlbWVudC5uYW1lLCBzdGF0ZW1lbnQpOwotICAgICAgICBl
bHNlCisgICAgICAgIH0gZWxzZSBpZiAoc3RhdGVtZW50IGluc3RhbmNlb2YgVHlwZSkgeworICAg
ICAgICAgICAgaWYgKHN0YXRlbWVudC5pc05hdGl2ZSAmJiBzdGF0ZW1lbnQubmFtZSA9PSAidmVj
dG9yIikgeworICAgICAgICAgICAgICAgIGxldCBhcnJheSA9IHRoaXMudHlwZXMuZ2V0KHN0YXRl
bWVudC5uYW1lKTsKKyAgICAgICAgICAgICAgICBpZiAoIWFycmF5KQorICAgICAgICAgICAgICAg
ICAgICB0aGlzLnR5cGVzLnNldChzdGF0ZW1lbnQubmFtZSwgYXJyYXkgPSBbXSk7CisgICAgICAg
ICAgICAgICAgYXJyYXkucHVzaChzdGF0ZW1lbnQpOworICAgICAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICAgICAgdGhpcy50eXBlcy5zZXQoc3RhdGVtZW50Lm5hbWUsIHN0YXRlbWVudCk7Cisg
ICAgICAgIH0gZWxzZQogICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJTdGF0ZW1lbnQgaXMg
bm90IGEgZnVuY3Rpb24gb3IgdHlwZTogIiArIHN0YXRlbWVudCk7Ci0gICAgICAgIHRoaXMuX3Rv
cExldmVsU3RhdGVtZW50cy5wdXNoKHN0YXRlbWVudCk7Ci0gICAgICAgIHRoaXMuX2dsb2JhbE5h
bWVDb250ZXh0LmFkZChzdGF0ZW1lbnQpOworICAgICAgICB0aGlzLnRvcExldmVsU3RhdGVtZW50
cy5wdXNoKHN0YXRlbWVudCk7CisgICAgICAgIHRoaXMuZ2xvYmFsTmFtZUNvbnRleHQuYWRkKHN0
YXRlbWVudCk7CiAgICAgfQogICAgIAogICAgIHRvU3RyaW5nKCkKICAgICB7Ci0gICAgICAgIGlm
ICghdGhpcy5fdG9wTGV2ZWxTdGF0ZW1lbnRzLmxlbmd0aCkKKyAgICAgICAgaWYgKCF0aGlzLnRv
cExldmVsU3RhdGVtZW50cy5sZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4gIiI7CiAgICAgICAg
IHJldHVybiB0aGlzLl90b3BMZXZlbFN0YXRlbWVudHMuam9pbigiOyIpICsgIjsiOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1JlY3Vyc2l2ZVR5cGVD
aGVja2VyLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmVjdXJzaXZlVHlwZUNo
ZWNrZXIuanMKaW5kZXggOTFmNzY3NDJmNjBkMTRhMzdlNmU2MDZjM2FiMmY5YzJjOGZhYjExNi4u
ZGUzZDUyNGJjNTQ4OGM4NzA1ZmVhOGY2N2JhZDg3YmVjYmI5N2RkYyAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmVjdXJzaXZlVHlwZUNoZWNrZXIuanMKKysrIGIv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmVjdXJzaXZlVHlwZUNoZWNrZXIuanMKQEAg
LTUxLDcgKzUxLDExIEBAIGNsYXNzIFJlY3Vyc2l2ZVR5cGVDaGVja2VyIGV4dGVuZHMgVmlzaXRv
ciB7CiAgICAgdmlzaXRUeXBlUmVmKG5vZGUpCiAgICAgewogICAgICAgICBzdXBlci52aXNpdFR5
cGVSZWYobm9kZSk7Ci0gICAgICAgIG5vZGUudHlwZS52aXNpdCh0aGlzKTsKKyAgICAgICAgaWYg
KG5vZGUucG9zc2libGVPdmVybG9hZHMpIHsKKyAgICAgICAgICAgIGZvciAobGV0IG92ZXJsb2Fk
IG9mIG5vZGUucG9zc2libGVPdmVybG9hZHMpCisgICAgICAgICAgICAgICAgb3ZlcmxvYWQudmlz
aXQodGhpcyk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbm9kZS50eXBlLnZpc2l0KHRo
aXMpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvUmVzb2x2ZU5hbWVzLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmVzb2x2
ZU5hbWVzLmpzCmluZGV4IDJlNDAyYzhkNmMwYTM2MDk4NTYxZTAyNzVlZTUzZTc3OGZkMzg0Yjgu
LmI4YjUzMzQyNDU5YWU4MzlhY2Y3ZjA3YzJiYmFlYTk2ZThhNTRjZGYgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Jlc29sdmVOYW1lcy5qcworKysgYi9Ub29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXNvbHZlTmFtZXMuanMKQEAgLTMxLDggKzMxLDEzIEBA
IGZ1bmN0aW9uIGNyZWF0ZU5hbWVSZXNvbHZlcihwcm9ncmFtKQogCiBmdW5jdGlvbiByZXNvbHZl
TmFtZXNJblR5cGVzKHByb2dyYW0sIG5hbWVSZXNvbHZlcikKIHsKLSAgICBmb3IgKGxldCB0eXBl
IG9mIHByb2dyYW0udHlwZXMudmFsdWVzKCkpCi0gICAgICAgIG5hbWVSZXNvbHZlci5kb1N0YXRl
bWVudCh0eXBlKTsKKyAgICBmb3IgKGxldCB0eXBlIG9mIHByb2dyYW0udHlwZXMudmFsdWVzKCkp
IHsKKyAgICAgICAgaWYgKHR5cGUgaW5zdGFuY2VvZiBBcnJheSkgeworICAgICAgICAgICAgZm9y
IChsZXQgY29uc3RpdHVlbnRUeXBlIG9mIHR5cGUpCisgICAgICAgICAgICAgICAgbmFtZVJlc29s
dmVyLmRvU3RhdGVtZW50KGNvbnN0aXR1ZW50VHlwZSk7CisgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgbmFtZVJlc29sdmVyLmRvU3RhdGVtZW50KHR5cGUpOworICAgIH0KIH0KIAogZnVuY3Rp
b24gcmVzb2x2ZU5hbWVzSW5GdW5jdGlvbnMocHJvZ3JhbSwgbmFtZVJlc29sdmVyKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmVzb2x2ZU92ZXJsb2FkSW1wbC5q
cyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Jlc29sdmVPdmVybG9hZEltcGwuanMK
aW5kZXggZDBmMWUzNGQ2MTdlYTI3MjY2NDY3YzE2MTcwNzE1NDY2NGE0NDlhZC4uNTFlZTMyOWFi
OTFhYTgzOGZkZWMyNGZkNTE2MWVhNmRlOWY2ODAyMiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvUmVzb2x2ZU92ZXJsb2FkSW1wbC5qcworKysgYi9Ub29scy9XZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXNvbHZlT3ZlcmxvYWRJbXBsLmpzCkBAIC0xMDAsMyArMTAw
LDI4IEBAIGZ1bmN0aW9uIHJlc29sdmVPdmVybG9hZEltcGwoZnVuY3Rpb25zLCBhcmd1bWVudFR5
cGVzLCByZXR1cm5UeXBlLCBhbGxvd0VudHJ5UG9pCiAgICAgCiAgICAgcmV0dXJuIHtmYWlsdXJl
czogYW1iaWd1aXR5TGlzdC5tYXAob3ZlcmxvYWQgPT4gbmV3IE92ZXJsb2FkUmVzb2x1dGlvbkZh
aWx1cmUob3ZlcmxvYWQuZnVuYywgbWVzc2FnZSkpfTsKIH0KKworZnVuY3Rpb24gcmVzb2x2ZVR5
cGVPdmVybG9hZEltcGwodHlwZXMsIHR5cGVBcmd1bWVudHMpCit7CisgICAgaWYgKCFmdW5jdGlv
bnMpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiTnVsbCB0eXBlczsgdGhhdCBzaG91bGQgaGF2
ZSBiZWVuIGNhdWdodCBieSB0aGUgY2FsbGVyLiIpOworCisgICAgbGV0IGZhaWx1cmVzID0gW107
CisgICAgbGV0IHN1Y2Nlc3NlcyA9IFtdOworICAgIGZvciAobGV0IHR5cGUgb2YgdHlwZXMpIHsK
KyAgICAgICAgbGV0IG92ZXJsb2FkID0gaW5mZXJUeXBlc0ZvckNhbGwoZnVuYywgYXJndW1lbnRU
eXBlcywgcmV0dXJuVHlwZSk7CisgICAgICAgIGlmIChvdmVybG9hZC5mYWlsdXJlKQorICAgICAg
ICAgICAgZmFpbHVyZXMucHVzaChvdmVybG9hZC5mYWlsdXJlKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgc3VjY2Vzc2VzLnB1c2gob3ZlcmxvYWQpOworICAgIH0KKyAgICAKKyAgICBpZiAo
IXN1Y2Nlc3Nlcy5sZW5ndGgpCisgICAgICAgIHJldHVybiB7ZmFpbHVyZXM6IGZhaWx1cmVzfTsK
KyAgICAKKyAgICBpZiAoc3VjY2Vzc2VzLmxlbmd0aCA9PSAxKQorICAgICAgICByZXR1cm4gc3Vj
Y2Vzc2VzWzBdOworICAgIAorICAgIGxldCBtZXNzYWdlID0gIkFtYmlndW91cyBvdmVybG9hZCAt
IHR5cGVzIG11dHVhbGx5IGFwcGxpY2FibGUiOworICAgIHJldHVybiB7ZmFpbHVyZXM6IHN1Y2Nl
c3Nlcy5tYXAob3ZlcmxvYWQgPT4gbmV3IFR5cGVPdmVybG9hZFJlc29sdXRpb25GYWlsdXJlKG92
ZXJsb2FkLnR5cGUsIG1lc3NhZ2UpKX07Cit9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9SZXNvbHZlVHlwZURlZnMuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9SZXNvbHZlVHlwZURlZnMuanMKaW5kZXggOTE0M2Y4ZTFlMDBhMDQ5ODE0YjkwYTM0
NWM1YWY0NTE0NTlkODU3NC4uMDU3NGJlY2Q1NTMxNTA5NDc4YTJkZWZkYzJmZTdjNjhlNjFjM2Qz
NSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmVzb2x2ZVR5cGVE
ZWZzLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Jlc29sdmVUeXBlRGVm
cy5qcwpAQCAtMjcsOCArMjcsMTMgQEAKIGZ1bmN0aW9uIHJlc29sdmVUeXBlRGVmc0luVHlwZXMo
cHJvZ3JhbSkKIHsKICAgICBsZXQgcmVzb2x2ZXIgPSBuZXcgVHlwZURlZlJlc29sdmVyKCk7Ci0g
ICAgZm9yIChsZXQgdHlwZSBvZiBwcm9ncmFtLnR5cGVzLnZhbHVlcygpKQotICAgICAgICB0eXBl
LnZpc2l0KHJlc29sdmVyKTsKKyAgICBmb3IgKGxldCB0eXBlIG9mIHByb2dyYW0udHlwZXMudmFs
dWVzKCkpIHsKKyAgICAgICAgaWYgKHR5cGUgaW5zdGFuY2VvZiBBcnJheSkgeworICAgICAgICAg
ICAgZm9yIChsZXQgY29uc3RpdHVlbnRUeXBlIG9mIHR5cGUpCisgICAgICAgICAgICAgICAgY29u
c3RpdHVlbnRUeXBlLnZpc2l0KHJlc29sdmVyKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICB0eXBlLnZpc2l0KHJlc29sdmVyKTsKKyAgICB9CiB9CiAKIGZ1bmN0aW9uIHJlc29sdmVUeXBl
RGVmc0luRnVuY3Rpb25zKHByb2dyYW0pCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9SZXdyaXRlci5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Jl
d3JpdGVyLmpzCmluZGV4IGI1NmNkNjBiZjZmYzI2MzZkZGQ0MzQxMjUyYTQ2YWEzMjRmYjQ5NmQu
LjM0YzY0NDgxMjBmZWZhZTY1NTAwMGZhZTc3ZDExM2RlNzZiNmExMTMgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Jld3JpdGVyLmpzCisrKyBiL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL1Jld3JpdGVyLmpzCkBAIC0zODIsNyArMzgyLDcgQEAgY2xhc3Mg
UmV3cml0ZXIgewogCiAgICAgdmlzaXRWZWN0b3JUeXBlKG5vZGUpCiAgICAgewotICAgICAgICBj
b25zdCB2ZWNUeXBlID0gbmV3IFZlY3RvclR5cGUobm9kZS5vcmlnaW4sIG5vZGUubmFtZSk7Cisg
ICAgICAgIGNvbnN0IHZlY1R5cGUgPSBuZXcgVmVjdG9yVHlwZShub2RlLm9yaWdpbiwgbm9kZS5u
YW1lLCBub2RlLnR5cGVBcmd1bWVudHMubWFwKGFyZ3VtZW50ID0+IGFyZ3VtZW50LnZpc2l0KHRo
aXMpKSk7CiAgICAgICAgIHZlY1R5cGUuX2VsZW1lbnRUeXBlID0gbm9kZS5lbGVtZW50VHlwZS52
aXNpdCh0aGlzKTsKICAgICAgICAgcmV0dXJuIHZlY1R5cGU7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU1BJUlYuaHRtbCBiL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL1NQSVJWLmh0bWwKaW5kZXggYzdiMzk0MGYyYjExYmQ4OTYxNGYxNGE5
YjUyYzQ3YTU2MTY2YWIxNC4uNzk4OWExYjgwYTczMThkZTRjYTg0YjExYTY3ZTFmNWJhYTEwN2Ix
NSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU1BJUlYuaHRtbAor
KysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TUElSVi5odG1sCkBAIC0xNDAsNiAr
MTQwLDcgQEAgdGQgewogICAgIDxzY3JpcHQgc3JjPSJUeXBlRGVmLmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHNyYz0iVHlwZURlZlJlc29sdmVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0
IHNyYz0iVHlwZVJlZi5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlR5cGVPdmVybG9h
ZFJlc29sdXRpb25GYWlsdXJlLmpzLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVHlw
ZWRWYWx1ZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlVpbnRMaXRlcmFsLmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVWludExpdGVyYWxUeXBlLmpzIj48L3NjcmlwdD4K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0YW5kYXJkTGlicmFy
eS5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0YW5kYXJkTGlicmFyeS5qcwpp
bmRleCAwNmIyNTFjZjBhMjQ4MTljYWI1MDY1ZWY1NDQ1ZTE0ODlkNWVhYWZjLi44MTkwYTQzNTY5
MjNhNjFlNTQ4NWJkZDRmMTgwZDEzODM3NzQ4OThiIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9TdGFuZGFyZExpYnJhcnkuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvU3RhbmRhcmRMaWJyYXJ5LmpzCkBAIC0zMywxNyArMzMsNzAgQEAgbGV0
IHN0YW5kYXJkTGlicmFyeSA9IGAKIG5hdGl2ZSB0eXBlZGVmIHZvaWQ7CiBuYXRpdmUgdHlwZWRl
ZiBib29sOwogbmF0aXZlIHR5cGVkZWYgdWNoYXI7CituYXRpdmUgdHlwZWRlZiB1c2hvcnQ7CiBu
YXRpdmUgdHlwZWRlZiB1aW50OworbmF0aXZlIHR5cGVkZWYgY2hhcjsKK25hdGl2ZSB0eXBlZGVm
IHNob3J0OwogbmF0aXZlIHR5cGVkZWYgaW50OworbmF0aXZlIHR5cGVkZWYgaGFsZjsKIG5hdGl2
ZSB0eXBlZGVmIGZsb2F0OwotCi0vLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIHRoZXNlIHR5cGVz
IHRvIEludHJpbnNpY3MuanMKLS8vIG5hdGl2ZSB0eXBlZGVmIHVzaG9ydDsKLS8vIG5hdGl2ZSB0
eXBlZGVmIGNoYXI7Ci0vLyBuYXRpdmUgdHlwZWRlZiBzaG9ydDsKLS8vIG5hdGl2ZSB0eXBlZGVm
IGhhbGY7Ci0vLyBuYXRpdmUgdHlwZWRlZiBhdG9taWNfaW50OwotLy8gbmF0aXZlIHR5cGVkZWYg
YXRvbWljX3VpbnQ7CituYXRpdmUgdHlwZWRlZiBhdG9taWNfaW50OworbmF0aXZlIHR5cGVkZWYg
YXRvbWljX3VpbnQ7CisKK25hdGl2ZSB0eXBlZGVmIHZlY3Rvcjxib29sLCAyPjsKK3R5cGVkZWYg
Ym9vbDIgPSB2ZWN0b3I8Ym9vbCwgMj47CituYXRpdmUgdHlwZWRlZiB2ZWN0b3I8Ym9vbCwgMz47
Cit0eXBlZGVmIGJvb2wzID0gdmVjdG9yPGJvb2wsIDM+OworbmF0aXZlIHR5cGVkZWYgdmVjdG9y
PGJvb2wsIDQ+OwordHlwZWRlZiBib29sNCA9IHZlY3Rvcjxib29sLCA0PjsKK25hdGl2ZSB0eXBl
ZGVmIHZlY3Rvcjx1Y2hhciwgMj47Cit0eXBlZGVmIHVjaGFyMiA9IHZlY3Rvcjx1Y2hhciwgMj47
CituYXRpdmUgdHlwZWRlZiB2ZWN0b3I8dWNoYXIsIDM+OwordHlwZWRlZiB1Y2hhcjMgPSB2ZWN0
b3I8dWNoYXIsIDM+OworbmF0aXZlIHR5cGVkZWYgdmVjdG9yPHVjaGFyLCA0PjsKK3R5cGVkZWYg
dWNoYXI0ID0gdmVjdG9yPHVjaGFyLCA0PjsKK25hdGl2ZSB0eXBlZGVmIHZlY3Rvcjx1c2hvcnQs
IDI+OwordHlwZWRlZiB1c2hvcnQyID0gdmVjdG9yPHVzaG9ydCwgMj47CituYXRpdmUgdHlwZWRl
ZiB2ZWN0b3I8dXNob3J0LCAzPjsKK3R5cGVkZWYgdXNob3J0MyA9IHZlY3Rvcjx1c2hvcnQsIDM+
OworbmF0aXZlIHR5cGVkZWYgdmVjdG9yPHVzaG9ydCwgND47Cit0eXBlZGVmIHVzaG9ydDQgPSB2
ZWN0b3I8dXNob3J0LCA0PjsKK25hdGl2ZSB0eXBlZGVmIHZlY3Rvcjx1aW50LCAyPjsKK3R5cGVk
ZWYgdWludDIgPSB2ZWN0b3I8dWludCwgMj47CituYXRpdmUgdHlwZWRlZiB2ZWN0b3I8dWludCwg
Mz47Cit0eXBlZGVmIHVpbnQzID0gdmVjdG9yPHVpbnQsIDM+OworbmF0aXZlIHR5cGVkZWYgdmVj
dG9yPHVpbnQsIDQ+OwordHlwZWRlZiB1aW50NCA9IHZlY3Rvcjx1aW50LCA0PjsKK25hdGl2ZSB0
eXBlZGVmIHZlY3RvcjxjaGFyLCAyPjsKK3R5cGVkZWYgY2hhcjIgPSB2ZWN0b3I8Y2hhciwgMj47
CituYXRpdmUgdHlwZWRlZiB2ZWN0b3I8Y2hhciwgMz47Cit0eXBlZGVmIGNoYXIzID0gdmVjdG9y
PGNoYXIsIDM+OworbmF0aXZlIHR5cGVkZWYgdmVjdG9yPGNoYXIsIDQ+OwordHlwZWRlZiBjaGFy
NCA9IHZlY3RvcjxjaGFyLCA0PjsKK25hdGl2ZSB0eXBlZGVmIHZlY3RvcjxzaG9ydCwgMj47Cit0
eXBlZGVmIHNob3J0MiA9IHZlY3RvcjxzaG9ydCwgMj47CituYXRpdmUgdHlwZWRlZiB2ZWN0b3I8
c2hvcnQsIDM+OwordHlwZWRlZiBzaG9ydDMgPSB2ZWN0b3I8c2hvcnQsIDM+OworbmF0aXZlIHR5
cGVkZWYgdmVjdG9yPHNob3J0LCA0PjsKK3R5cGVkZWYgc2hvcnQ0ID0gdmVjdG9yPHNob3J0LCA0
PjsKK25hdGl2ZSB0eXBlZGVmIHZlY3RvcjxpbnQsIDI+OwordHlwZWRlZiBpbnQyID0gdmVjdG9y
PGludCwgMj47CituYXRpdmUgdHlwZWRlZiB2ZWN0b3I8aW50LCAzPjsKK3R5cGVkZWYgaW50MyA9
IHZlY3RvcjxpbnQsIDM+OworbmF0aXZlIHR5cGVkZWYgdmVjdG9yPGludCwgND47Cit0eXBlZGVm
IGludDQgPSB2ZWN0b3I8aW50LCA0PjsKK25hdGl2ZSB0eXBlZGVmIHZlY3RvcjxoYWxmLCAyPjsK
K3R5cGVkZWYgaGFsZjIgPSB2ZWN0b3I8aGFsZiwgMj47CituYXRpdmUgdHlwZWRlZiB2ZWN0b3I8
aGFsZiwgMz47Cit0eXBlZGVmIGhhbGYzID0gdmVjdG9yPGhhbGYsIDM+OworbmF0aXZlIHR5cGVk
ZWYgdmVjdG9yPGhhbGYsIDQ+OwordHlwZWRlZiBoYWxmNCA9IHZlY3RvcjxoYWxmLCA0PjsKK25h
dGl2ZSB0eXBlZGVmIHZlY3RvcjxmbG9hdCwgMj47Cit0eXBlZGVmIGZsb2F0MiA9IHZlY3Rvcjxm
bG9hdCwgMj47CituYXRpdmUgdHlwZWRlZiB2ZWN0b3I8ZmxvYXQsIDM+OwordHlwZWRlZiBmbG9h
dDMgPSB2ZWN0b3I8ZmxvYXQsIDM+OworbmF0aXZlIHR5cGVkZWYgdmVjdG9yPGZsb2F0LCA0PjsK
K3R5cGVkZWYgZmxvYXQ0ID0gdmVjdG9yPGZsb2F0LCA0PjsKIAogbmF0aXZlIG9wZXJhdG9yIGlu
dCh1aW50KTsKIG5hdGl2ZSBvcGVyYXRvciBpbnQodWNoYXIpOwpAQCAtMTQ3LDI4ICsyMDAsMTIg
QEAgYm9vbCBvcGVyYXRvcn4oYm9vbCB2YWx1ZSkKIHsKICAgICByZXR1cm4gIXZhbHVlOwogfQot
Ci1uYXRpdmUgdHlwZWRlZiB1Y2hhcjI7Ci1uYXRpdmUgdHlwZWRlZiB1Y2hhcjM7Ci1uYXRpdmUg
dHlwZWRlZiB1Y2hhcjQ7Ci0KLW5hdGl2ZSB0eXBlZGVmIHVpbnQyOwotbmF0aXZlIHR5cGVkZWYg
dWludDM7Ci1uYXRpdmUgdHlwZWRlZiB1aW50NDsKLQotbmF0aXZlIHR5cGVkZWYgaW50MjsKLW5h
dGl2ZSB0eXBlZGVmIGludDM7Ci1uYXRpdmUgdHlwZWRlZiBpbnQ0OwotCi1uYXRpdmUgdHlwZWRl
ZiBmbG9hdDI7Ci1uYXRpdmUgdHlwZWRlZiBmbG9hdDM7Ci1uYXRpdmUgdHlwZWRlZiBmbG9hdDQ7
CiBgOwogCiAvLyBGSVhNRTogT25jZSB0aGUgc3RhbmRhcmQgbGlicmFyeSBoYXMgYmVlbiByZXBs
YWNlZCB3aXRoIGEgbmV3IHZlcnNpb24sIHRoaXMgY29tbWVudHMgc2hvdWxkIGJlIHJlbW92ZWQu
CiAvLyBUaGlzIGxpc3QgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYXZhaWxhYmlsaXR5IG9mIHZl
Y3RvciB0eXBlcyBhdmFpbGFibGUgaW4gdGhlIGxhbmdhdWdlLgogLy8gUGVybWlzc2libGUgdmVj
dG9yIGVsZW1lbnQgdHlwZXMgbXVzdCBhcHBlYXIgaW4gdGhpcyBsaXN0IGFuZCBpbiB0aGUgc3Rh
bmRhcmQgbGlicmFyeQotY29uc3QgVmVjdG9yRWxlbWVudFR5cGVzID0gWyAvKiJib29sIiwqLyAi
dWNoYXIiLCAvKiJjaGFyIiwgInVzaG9ydCIsICJzaG9ydCIsKi8gInVpbnQiLCAiaW50IiwgLyog
ImhhbGYiLCAqLyJmbG9hdCIgXTsKK2NvbnN0IFZlY3RvckVsZW1lbnRUeXBlcyA9IFsgImJvb2wi
LCAidWNoYXIiLCAiY2hhciIsICJ1c2hvcnQiLCAic2hvcnQiLCAidWludCIsICJpbnQiLCAiaGFs
ZiIsICJmbG9hdCIgXTsKIGNvbnN0IFZlY3RvckVsZW1lbnRTaXplcyA9IFsgMiwgMywgNCBdOwog
CiBmdW5jdGlvbiBhbGxWZWN0b3JUeXBlTmFtZXMoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvU3RhdGVtZW50Q2xvbmVyLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvU3RhdGVtZW50Q2xvbmVyLmpzCmluZGV4IGIzOTQ4YzQ1MGM3MTYwOTc3OTc1
ZWQ0ZThlOThlZDk5YzRmN2EwNTkuLjBkMDcxNWE5ODU0ZGVmMWJmZDJhODA4Yzc0MDQxMTJiYTFh
NGEwYzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0YXRlbWVu
dENsb25lci5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TdGF0ZW1lbnRD
bG9uZXIuanMKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgU3RhdGVtZW50Q2xvbmVyIGV4dGVuZHMg
UmV3cml0ZXIgewogICAgIAogICAgIHZpc2l0TmF0aXZlVHlwZShub2RlKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIG5ldyBOYXRpdmVUeXBlKG5vZGUub3JpZ2luLCBub2RlLm5hbWUpOworICAgICAg
ICByZXR1cm4gbmV3IE5hdGl2ZVR5cGUobm9kZS5vcmlnaW4sIG5vZGUubmFtZSwgbm9kZS50eXBl
QXJndW1lbnRzLm1hcChhcmd1bWVudCA9PiBhcmd1bWVudC52aXNpdCh0aGlzKSkpOwogICAgIH0K
ICAgICAKICAgICB2aXNpdFR5cGVEZWYobm9kZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL1Rlc3QuaHRtbCBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L1Rlc3QuaHRtbAppbmRleCAxM2YzNTgyMzk5MjlkOGEzZTZhY2U1MjU0NWI5MWNhNTJkNjA2MGU0
Li4xYjk2MTA5YWI3Y2UxYzEwMWE4ODg0MDMwOTgxZDdiMTk5OWE0MjA2IDEwMDY0NAotLS0gYS9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0bWwKKysrIGIvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5odG1sCkBAIC0xMzQsNiArMTM0LDcgQEAKIDxzY3JpcHQg
c3JjPSJUeXBlRGVmLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJUeXBlRGVmUmVzb2x2ZXIu
anMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlR5cGVSZWYuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9IlR5cGVPdmVybG9hZFJlc29sdXRpb25GYWlsdXJlLmpzIj48L3NjcmlwdD4KIDxzY3Jp
cHQgc3JjPSJUeXBlZFZhbHVlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJVaW50TGl0ZXJh
bC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iVWludExpdGVyYWxUeXBlLmpzIj48L3Njcmlw
dD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1R5cGVSZWYuanMg
Yi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UeXBlUmVmLmpzCmluZGV4IGI1ZjNjMGIz
ZDkyNTMyZTA1YzY4MDA1NGExNjFmMDVlMGRkZDY0NmIuLjUzZWEzYzUxZTY5Y2YxOGI2NTYwNzk2
NzEwNmM0NDc3ZTJkZDk3NmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL1R5cGVSZWYuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVHlwZVJl
Zi5qcwpAQCAtNjQsNiArNjQsMzMgQEAgY2xhc3MgVHlwZVJlZiBleHRlbmRzIFR5cGUgewogICAg
ICAgICB0aGlzLl90eXBlID0gbmV3VHlwZTsKICAgICB9CiAKKyAgICByZXNvbHZlKHBvc3NpYmxl
T3ZlcmxvYWRzLCBwcm9ncmFtKQorICAgIHsKKyAgICAgICAgaWYgKCFwb3NzaWJsZU92ZXJsb2Fk
cykKKyAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9yKHRoaXMub3JpZ2luLm9yaWdpblN0
cmluZywgIkRpZCBub3QgZmluZCBhbnkgdHlwZXMgbmFtZWQgIiArIHRoaXMubmFtZSk7CisKKyAg
ICAgICAgbGV0IGZhaWx1cmVzID0gW107CisgICAgICAgIGxldCBvdmVybG9hZCA9IHJlc29sdmVU
eXBlT3ZlcmxvYWRJbXBsKHBvc3NpYmxlT3ZlcmxvYWRzLCB0aGlzLnR5cGVBcmd1bWVudHMpOwor
CisgICAgICAgIGlmICghb3ZlcmxvYWQudHlwZSkgeworICAgICAgICAgICAgZmFpbHVyZXMucHVz
aCguLi5vdmVybG9hZC5mYWlsdXJlcyk7CisgICAgICAgICAgICBsZXQgbWVzc2FnZSA9ICJEaWQg
bm90IGZpbmQgdHlwZSBuYW1lZCAiICsgdGhpcy5uYW1lICsgIiBmb3IgdHlwZSBhcmd1bWVudHMg
IjsKKyAgICAgICAgICAgIG1lc3NhZ2UgKz0gIigiICsgdGhpcy50eXBlQXJndW1lbnRzICsgIiki
OworICAgICAgICAgICAgaWYgKGZhaWx1cmVzLmxlbmd0aCkKKyAgICAgICAgICAgICAgICBtZXNz
YWdlICs9ICIsIGJ1dCBjb25zaWRlcmVkOlxuIiArIGZhaWx1cmVzLmpvaW4oIlxuIikKKyAgICAg
ICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9yKHRoaXMub3JpZ2luLm9yaWdpblN0cmluZywgbWVz
c2FnZSk7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudHlw
ZUFyZ3VtZW50cy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgbGV0IHR5cGVBcmd1bWVudCA9
IHRoaXMudHlwZUFyZ3VtZW50c1tpXTsKKyAgICAgICAgICAgIGxldCByZXNvbHZlZFR5cGVBcmd1
bWVudCA9IG92ZXJsb2FkLnR5cGUudHlwZUFyZ3VtZW50c1tpXS50eXBlOworICAgICAgICAgICAg
bGV0IHJlc3VsdCA9IHR5cGVBcmd1bWVudC5lcXVhbHNXaXRoQ29tbWl0KHJlc29sdmVkVHlwZUFy
Z3VtZW50KTsKKyAgICAgICAgICAgIGlmICghcmVzdWx0KQorICAgICAgICAgICAgICAgIHRocm93
IG5ldyBFcnJvcigiQXQgIiArIHRoaXMub3JpZ2luLm9yaWdpblN0cmluZyArICIgYXJndW1lbnQg
dHlwZXMgZm9yIFR5cGUgYW5kIFR5cGVSZWYgbm90IGVxdWFsOiBhcmd1bWVudCB0eXBlID0gIiAr
IHR5cGVBcmd1bWVudCArICIsIHJlc29sdmVkIHR5ZXAgYXJndW1lbnQgPSAiICsgcmVzb2x2ZWRU
eXBlQXJndW1lbnQpOworICAgICAgICB9CisgICAgICAgIHRoaXMudHlwZSA9IG92ZXJsb2FkLnR5
cGU7CisgICAgfQorCiAgICAgZ2V0IHVuaWZ5Tm9kZSgpCiAgICAgewogICAgICAgICBpZiAoIXRo
aXMudHlwZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1ZlY3Rv
clR5cGUuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9WZWN0b3JUeXBlLmpzCmlu
ZGV4IDUwMTRjNjcxYTA3ODgyMDAyYzIzNGJiMzJmMTdjODg2MGVmZmMxYzYuLmQzNTEyNzkxNDRh
YWE1ZGQ5MmUwMTQ5YTFhMzhlZDNmZDQ2MmNhZDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL1ZlY3RvclR5cGUuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvVmVjdG9yVHlwZS5qcwpAQCAtMjUsMTkgKzI1LDEzIEBACiAidXNlIHN0cmljdCI7
CiAKIGNsYXNzIFZlY3RvclR5cGUgZXh0ZW5kcyBOYXRpdmVUeXBlIHsKLSAgICBjb25zdHJ1Y3Rv
cihvcmlnaW4sIG5hbWUpCisgICAgY29uc3RydWN0b3Iob3JpZ2luLCBuYW1lLCB0eXBlQXJndW1l
bnRzKQogICAgIHsKLSAgICAgICAgc3VwZXIob3JpZ2luLCBuYW1lKTsKLSAgICAgICAgY29uc3Qg
bWF0Y2ggPSAvXihbQS16XSspKFswLTldKSQvLmV4ZWMobmFtZSk7Ci0gICAgICAgIGlmICghbWF0
Y2gpCi0gICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihvcmlnaW4ub3JpZ2luU3RyaW5n
LCBgJHtuYW1lfSBkb2Vzbid0IG1hdGNoIHRoZSBmb3JtYXQgZm9yIHZlY3RvciB0eXBlIG5hbWVz
LidgKTsKLQotICAgICAgICB0aGlzLl9lbGVtZW50VHlwZSA9IG5ldyBUeXBlUmVmKG9yaWdpbiwg
bWF0Y2hbMV0pOwotICAgICAgICB0aGlzLl9udW1FbGVtZW50c1ZhbHVlID0gcGFyc2VJbnQobWF0
Y2hbMl0pOworICAgICAgICBzdXBlcihvcmlnaW4sIG5hbWUsIHR5cGVBcmd1bWVudHMpOwogICAg
IH0KIAotICAgIGdldCBlbGVtZW50VHlwZSgpIHsgcmV0dXJuIHRoaXMuX2VsZW1lbnRUeXBlOyB9
Ci0gICAgZ2V0IG51bUVsZW1lbnRzVmFsdWUoKSB7IHJldHVybiB0aGlzLl9udW1FbGVtZW50c1Zh
bHVlOyB9CisgICAgZ2V0IGVsZW1lbnRUeXBlKCkgeyByZXR1cm4gdGhpcy50eXBlQXJndW1lbnRz
WzBdOyB9CisgICAgZ2V0IG51bUVsZW1lbnRzVmFsdWUoKSB7IHJldHVybiB0aGlzLnR5cGVBcmd1
bWVudHNbMV0udmFsdWU7IH0KICAgICBnZXQgc2l6ZSgpIHsgcmV0dXJuIHRoaXMuZWxlbWVudFR5
cGUuc2l6ZSAqIHRoaXMubnVtRWxlbWVudHNWYWx1ZTsgfQogCiAgICAgdW5pZnlJbXBsKHVuaWZp
Y2F0aW9uQ29udGV4dCwgb3RoZXIpCkBAIC01OSw3ICs1Myw3IEBAIGNsYXNzIFZlY3RvclR5cGUg
ZXh0ZW5kcyBOYXRpdmVUeXBlIHsKIAogICAgIHRvU3RyaW5nKCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBgbmF0aXZlIHR5cGVkZWYgJHt0aGlzLmVsZW1lbnRUeXBlfSR7dGhpcy5udW1FbGVtZW50
c1ZhbHVlfWA7CisgICAgICAgIHJldHVybiBgbmF0aXZlIHR5cGVkZWYgdmVjdG9yPCR7dGhpcy5l
bGVtZW50VHlwZX0sICR7dGhpcy5udW1FbGVtZW50c1ZhbHVlfT5gOwogICAgIH0KIH0KIApkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvaW5kZXguaHRtbCBiL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL2luZGV4Lmh0bWwKaW5kZXggNGM5M2EzM2U2YTM4NjYy
ZThiYTFlODQyNDAzZDRjMDJkNWU5ZjlkZi4uZjg2YmIwYTBkZjk3ODkyMjk1MGM1ZWVjMzRiODA3
NzA2OWFkNDg4ZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvaW5k
ZXguaHRtbAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9pbmRleC5odG1sCkBA
IC0xMzQsNiArMTM0LDcgQEAKIDxzY3JpcHQgc3JjPSJUeXBlRGVmLmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQgc3JjPSJUeXBlRGVmUmVzb2x2ZXIuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlR5
cGVSZWYuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlR5cGVPdmVybG9hZFJlc29sdXRpb25G
YWlsdXJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJUeXBlZFZhbHVlLmpzIj48L3Njcmlw
dD4KIDxzY3JpcHQgc3JjPSJVaW50TGl0ZXJhbC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0i
VWludExpdGVyYWxUeXBlLmpzIj48L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347718</attachid>
            <date>2018-08-21 15:58:46 -0700</date>
            <delta_ts>2018-08-21 19:26:06 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-188773-20180821155845.patch</filename>
            <type>text/plain</type>
            <size>67007</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1MTMxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZjlmYjY5M2Q4YjQ4ZWViNjUxOWI0ZTg5NDBlMGJhZTJm
YzM1ZTY5ZC4uNjNjYTYzYTYyYzhmMjY1ZTJkYjQyNjgxOWE5NzliMjU4ZmJlYjMzYiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMx
IEBACisyMDE4LTA4LTIxICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CisKKyAgICAgICAgW1dITFNMXSBBbGxvdyBuYXRpdmUgdHlwZXMgdG8gaGF2ZSB0eXBlIGFyZ3Vt
ZW50cyAobGlrZSAidmVjdG9yPGZsb2F0LCA0PiIpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODg3NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0ludHJpbnNp
Y3MuanM6CisgICAgICAgIChJbnRyaW5zaWNzLmNhc3QpOgorICAgICAgICAoSW50cmluc2ljcy5i
aXR3aXNlQ2FzdCk6CisgICAgICAgIChJbnRyaW5zaWNzLmNhc3RUb0hhbGYpOgorICAgICAgICAo
SW50cmluc2ljcy4pOgorICAgICAgICAoSW50cmluc2ljcyk6CisgICAgICAgICogV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvTmF0aXZlVHlwZS5qczoKKyAgICAgICAgKE5hdGl2ZVR5cGUpOgorICAg
ICAgICAoTmF0aXZlVHlwZS5wcm90b3R5cGUuZ2V0IHR5cGVBcmd1bWVudHMpOgorICAgICAgICAo
TmF0aXZlVHlwZS5wcm90b3R5cGUudG9TdHJpbmcpOgorICAgICAgICAoTmF0aXZlVHlwZS5jcmVh
dGUpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1BhcnNlLmpzOgorICAgICAg
ICAoaXNDYWxsRXhwcmVzc2lvbik6CisgICAgICAgIChwYXJzZU5hdGl2ZSk6CisgICAgICAgICog
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhbmRhcmRMaWJyYXJ5LmpzOgorICAgICAgICAoYm9v
bC5vcGVyYXRvcik6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVmVjdG9yVHlw
ZS5qczoKKyAgICAgICAgKFZlY3RvclR5cGUpOgorICAgICAgICAoVmVjdG9yVHlwZS5wcm90b3R5
cGUuZ2V0IGVsZW1lbnRUeXBlKToKKyAgICAgICAgKFZlY3RvclR5cGUucHJvdG90eXBlLmdldCBu
dW1FbGVtZW50c1ZhbHVlKToKKwogMjAxOC0wOC0yMSAgQW5keSBWYW5XYWdvbmVyICA8YW5keUB2
YW53YWdvbmVyLmZhbWlseT4KIAogICAgICAgICBVbnJldmlld2VkLCBhZGQgbXlzZWxmIHRvIGNv
bW1pdHRlcnMgbGlzdC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L0FsbC5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0FsbC5qcwppbmRleCA4MTUy
NTI3M2FlNjVhMTQ4NjU5NjRhMTNkYTQ1Y2U5NGVmMTA2ODRhLi44ZWUxZmZlYWVlZTRkODY0ODk3
MGE2MzIzNDU0MjZiZWFmMzA5Y2NmIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9BbGwuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQWxsLmpz
CkBAIC0xMzMsNyArMTMzLDYgQEAgbG9hZCgiUHRyVHlwZS5qcyIpOwogbG9hZCgiUmVhZE1vZGlm
eVdyaXRlRXhwcmVzc2lvbi5qcyIpOwogbG9hZCgiUmVjdXJzaW9uQ2hlY2tlci5qcyIpOwogbG9h
ZCgiUmVjdXJzaXZlVHlwZUNoZWNrZXIuanMiKTsKLWxvYWQoIlJlbW92ZVR5cGVBcmd1bWVudHMu
anMiKTsKIGxvYWQoIlJlc29sdmVOYW1lcy5qcyIpOwogbG9hZCgiUmVzb2x2ZU92ZXJsb2FkSW1w
bC5qcyIpOwogbG9hZCgiUmVzb2x2ZVByb3BlcnRpZXMuanMiKTsKQEAgLTE1Nyw2ICsxNTYsNyBA
QCBsb2FkKCJUcmFwU3RhdGVtZW50LmpzIik7CiBsb2FkKCJUeXBlRGVmLmpzIik7CiBsb2FkKCJU
eXBlRGVmUmVzb2x2ZXIuanMiKTsKIGxvYWQoIlR5cGVSZWYuanMiKTsKK2xvYWQoIlR5cGVPdmVy
bG9hZFJlc29sdXRpb25GYWlsdXJlLmpzIik7CiBsb2FkKCJUeXBlZFZhbHVlLmpzIik7CiBsb2Fk
KCJVaW50TGl0ZXJhbC5qcyIpOwogbG9hZCgiVWludExpdGVyYWxUeXBlLmpzIik7CkBAIC0xNzAs
NCArMTcwLDQgQEAgbG9hZCgiV1N5bnRheEVycm9yLmpzIik7CiBsb2FkKCJXVHJhcEVycm9yLmpz
Iik7CiBsb2FkKCJXVHlwZUVycm9yLmpzIik7CiBsb2FkKCJXaGlsZUxvb3AuanMiKTsKLWxvYWQo
IldyYXBDaGVja2VyLmpzIik7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorbG9hZCgiV3Jh
cENoZWNrZXIuanMiKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L0NhbGxFeHByZXNzaW9uLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2FsbEV4
cHJlc3Npb24uanMKaW5kZXggNmRiYTE1MzI5NDZjZGE3OGQ3OTU1YzU2NGJhY2NjYjY4MjMwNzYy
Yy4uYWUyNzQxZTc3NWMzN2ZmZjhkNzBkZjAyYzNlZmQwNzhjMjZmMDU0YyAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2FsbEV4cHJlc3Npb24uanMKKysrIGIvVG9v
bHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2FsbEV4cHJlc3Npb24uanMKQEAgLTY2LDcgKzY2
LDYgQEAgY2xhc3MgQ2FsbEV4cHJlc3Npb24gZXh0ZW5kcyBFeHByZXNzaW9uIHsKICAgICAgICAg
ICAgICAgICBvdmVybG9hZC5mdW5jID0gZnVuYzsKICAgICAgICAgfQogCi0KICAgICAgICAgaWYg
KCFvdmVybG9hZC5mdW5jKSB7CiAgICAgICAgICAgICBmYWlsdXJlcy5wdXNoKC4uLm92ZXJsb2Fk
LmZhaWx1cmVzKTsKICAgICAgICAgICAgIGxldCBtZXNzYWdlID0gIkRpZCBub3QgZmluZCBmdW5j
dGlvbiBuYW1lZCAiICsgdGhpcy5uYW1lICsgIiBmb3IgY2FsbCB3aXRoICI7CmRpZmYgLS1naXQg
YS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DaGVja2VyLmpzIGIvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvQ2hlY2tlci5qcwppbmRleCAxYTE0Yzg2NmFjZWQ0MTEyYjE4MGY2
OTE1NmMwNmQyYjY2NGQ4N2UyLi45ODg5YTA4MzBiNmRlMTJiOGFjOTc4YjRmZjI3ODQ2MGIwNjYz
NzZjIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DaGVja2VyLmpz
CisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NoZWNrZXIuanMKQEAgLTQxLDgg
KzQxLDEzIEBAIGNsYXNzIENoZWNrZXIgZXh0ZW5kcyBWaXNpdG9yIHsKICAgICAgICAgICAgIHN0
YXRlbWVudC52aXNpdCh0aGlzKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgZm9yIChs
ZXQgdHlwZSBvZiBub2RlLnR5cGVzLnZhbHVlcygpKQotICAgICAgICAgICAgZG9TdGF0ZW1lbnQo
dHlwZSk7CisgICAgICAgIGZvciAobGV0IHR5cGUgb2Ygbm9kZS50eXBlcy52YWx1ZXMoKSkgewor
ICAgICAgICAgICAgaWYgKHR5cGUgaW5zdGFuY2VvZiBBcnJheSkgeworICAgICAgICAgICAgICAg
IGZvciAobGV0IGNvbnN0aXR1ZW50VHlwZSBvZiB0eXBlKQorICAgICAgICAgICAgICAgICAgICBk
b1N0YXRlbWVudChjb25zdGl0dWVudFR5cGUpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICAgICAgZG9TdGF0ZW1lbnQodHlwZSk7CisgICAgICAgIH0KICAgICAgICAgZm9yIChsZXQg
ZnVuY3Mgb2Ygbm9kZS5mdW5jdGlvbnMudmFsdWVzKCkpIHsKICAgICAgICAgICAgIGZvciAobGV0
IGZ1bmMgb2YgZnVuY3MpIHsKICAgICAgICAgICAgICAgICB0aGlzLnZpc2l0RnVuYyhmdW5jKTsK
QEAgLTI0NSw5ICsyNTAsMTMgQEAgY2xhc3MgQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogICAg
IAogICAgIHZpc2l0VHlwZVJlZihub2RlKQogICAgIHsKLSAgICAgICAgaWYgKCFub2RlLnR5cGUp
CisgICAgICAgIGlmICghbm9kZS50eXBlICYmICFub2RlLnBvc3NpYmxlT3ZlcmxvYWRzKQogICAg
ICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJUeXBlIHJlZmVyZW5jZSB3aXRob3V0IGEgdHlwZSBp
biBjaGVja2VyOiAiICsgbm9kZSArICIgYXQgIiArIG5vZGUub3JpZ2luKTsKLSAgICAgICAgaWYg
KCEobm9kZS50eXBlIGluc3RhbmNlb2YgU3RydWN0VHlwZSkpCisgICAgICAgIGlmICghbm9kZS50
eXBlKQorICAgICAgICAgICAgbm9kZS5yZXNvbHZlKG5vZGUucG9zc2libGVPdmVybG9hZHMsIHRo
aXMuX3Byb2dyYW0pOworICAgICAgICBpZiAoIW5vZGUudHlwZSkKKyAgICAgICAgICAgIHRocm93
IG5ldyBFcnJvcigiVHlwZSByZWZlcmVuY2Ugd2l0aG91dCBhIHR5cGUgYWZ0ZXIgcG9zc2libHkg
cmVzb2x2aW5nIGluIGNoZWNrZXI6ICIgKyBub2RlICsgIiBhdCAiICsgbm9kZS5vcmlnaW4pOwor
ICAgICAgICBpZiAoIShub2RlLnR5cGUgaW5zdGFuY2VvZiBTdHJ1Y3RUeXBlKSkgLy8gV2h5IGRv
bid0IHdlIHJlY3Vyc2Ugb24gU3RydWN0VHlwZXM/CiAgICAgICAgICAgICBub2RlLnR5cGUudmlz
aXQodGhpcyk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9JbmZlclR5cGVzRm9yQ2FsbC5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L0luZmVyVHlwZXNGb3JDYWxsLmpzCmluZGV4IDVmMzJlZDFjNDkwYTdkZjg5NDFlOTE5YzEzMGNm
NjVlYWE4YjZhNGQuLmJjZmViOTg2Y2FmZjQ5ZjAyODdhODM2NzhiZjExNTYyODQ3ZjAzODkgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0luZmVyVHlwZXNGb3JDYWxs
LmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0luZmVyVHlwZXNGb3JDYWxs
LmpzCkBAIC0zNiwxMiArMzYsOCBAQCBmdW5jdGlvbiBpbmZlclR5cGVzRm9yQ2FsbChmdW5jLCBh
cmd1bWVudFR5cGVzLCByZXR1cm5UeXBlKQogICAgICAgICBpZiAoIWFyZ3VtZW50VHlwZXNbaV0u
dW5pZnkodW5pZmljYXRpb25Db250ZXh0LCBmdW5jLnBhcmFtZXRlcnNbaV0udHlwZSkpCiAgICAg
ICAgICAgICByZXR1cm4ge2ZhaWx1cmU6IG5ldyBPdmVybG9hZFJlc29sdXRpb25GYWlsdXJlKGZ1
bmMsICJBcmd1bWVudCAjIiArIChpICsgMSkgKyAiICIgKyAoZnVuYy5wYXJhbWV0ZXJzW2ldLm5h
bWUgPyAiZm9yIHBhcmFtZXRlciAiICsgZnVuYy5wYXJhbWV0ZXJzW2ldLm5hbWUgKyAiICIgOiAi
IikgKyAiZG9lcyBub3QgbWF0Y2ggKHBhc3NlZCAiICsgYXJndW1lbnRUeXBlc1tpXSArICIsIHJl
cXVpcmUgIiArIGZ1bmMucGFyYW1ldGVyc1tpXS50eXBlICsgIikiKX07CiAgICAgfQotICAgIGlm
IChyZXR1cm5UeXBlICYmICFyZXR1cm5UeXBlLnVuaWZ5KHVuaWZpY2F0aW9uQ29udGV4dCwgZnVu
Yy5yZXR1cm5UeXBlKSkgewotICAgICAgICBpZiAoZnVuYy5yZXR1cm5UeXBlLnRvU3RyaW5nKCkg
PT0gInZlY3RvciIpIHsKLSAgICAgICAgICAgIHJldHVyblR5cGUudW5pZnkodW5pZmljYXRpb25D
b250ZXh0LCBmdW5jLnJldHVyblR5cGUpCi0gICAgICAgIH0KKyAgICBpZiAocmV0dXJuVHlwZSAm
JiAhcmV0dXJuVHlwZS51bmlmeSh1bmlmaWNhdGlvbkNvbnRleHQsIGZ1bmMucmV0dXJuVHlwZSkp
CiAgICAgICAgIHJldHVybiB7ZmFpbHVyZTogbmV3IE92ZXJsb2FkUmVzb2x1dGlvbkZhaWx1cmUo
ZnVuYywgIlJldHVybiB0eXBlICIgKyBmdW5jLnJldHVyblR5cGUgKyAiIGRvZXMgbm90IG1hdGNo
ICIgKyByZXR1cm5UeXBlKX07Ci0gICAgfQogICAgIGxldCB2ZXJpZmljYXRpb25SZXN1bHQgPSB1
bmlmaWNhdGlvbkNvbnRleHQudmVyaWZ5KCk7CiAgICAgaWYgKCF2ZXJpZmljYXRpb25SZXN1bHQu
cmVzdWx0KQogICAgICAgICByZXR1cm4ge2ZhaWx1cmU6IG5ldyBPdmVybG9hZFJlc29sdXRpb25G
YWlsdXJlKGZ1bmMsIHZlcmlmaWNhdGlvblJlc3VsdC5yZWFzb24pfTsKQEAgLTQ5LDMgKzQ1LDIx
IEBAIGZ1bmN0aW9uIGluZmVyVHlwZXNGb3JDYWxsKGZ1bmMsIGFyZ3VtZW50VHlwZXMsIHJldHVy
blR5cGUpCiAgICAgcmV0dXJuIHtmdW5jLCB1bmlmaWNhdGlvbkNvbnRleHR9OwogfQogCitmdW5j
dGlvbiBpbmZlclR5cGVzRm9yVHlwZUFyZ3VtZW50cyh0eXBlLCB0eXBlQXJndW1lbnRzKQorewor
ICAgIGlmICh0eXBlQXJndW1lbnRzLmxlbmd0aCAhPSB0eXBlLnR5cGVBcmd1bWVudHMubGVuZ3Ro
KQorICAgICAgICByZXR1cm4ge2ZhaWx1cmU6IG5ldyBUeXBlT3ZlcmxvYWRSZXNvbHV0aW9uRmFp
bHVyZSh0eXBlLCAiV3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cyAocGFzc2VkICIgKyB0eXBlQXJn
dW1lbnRzLmxlbmd0aCArICIsIHJlcXVpcmUgIiArIHR5cGUudHlwZUFyZ3VtZW50cy5sZW5ndGgg
KyAiKSIpfTsKKyAgICBsZXQgdW5pZmljYXRpb25Db250ZXh0ID0gbmV3IFVuaWZpY2F0aW9uQ29u
dGV4dCgpOworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0eXBlQXJndW1lbnRzLmxlbmd0aDsg
KytpKSB7CisgICAgICAgIGlmICghdHlwZUFyZ3VtZW50c1tpXSkKKyAgICAgICAgICAgIHRocm93
IG5ldyBFcnJvcigiTnVsbCB0eXBlIGFyZ3VtZW50IGF0IGkgPSAiICsgaSk7CisgICAgICAgIGlm
ICghdHlwZUFyZ3VtZW50c1tpXS51bmlmeSh1bmlmaWNhdGlvbkNvbnRleHQsIHR5cGUudHlwZUFy
Z3VtZW50c1tpXSkpCisgICAgICAgICAgICByZXR1cm4ge2ZhaWx1cmU6IG5ldyBUeXBlT3Zlcmxv
YWRSZXNvbHV0aW9uRmFpbHVyZSh0eXBlLCAiQXJndW1lbnQgIyIgKyAoaSArIDEpICsgIiAiICsg
KHR5cGUudHlwZUFyZ3VtZW50c1tpXS5uYW1lID8gImZvciBwYXJhbWV0ZXIgIiArIHR5cGUudHlw
ZUFyZ3VtZW50c1tpXS5uYW1lICsgIiAiIDogIiIpICsgImRvZXMgbm90IG1hdGNoIChwYXNzZWQg
IiArIHR5cGVBcmd1bWVudHNbaV0gKyAiLCByZXF1aXJlICIgKyB0eXBlLnR5cGVBcmd1bWVudHNb
aV0udHlwZSArICIpIil9OworICAgIH0KKyAgICBsZXQgdmVyaWZpY2F0aW9uUmVzdWx0ID0gdW5p
ZmljYXRpb25Db250ZXh0LnZlcmlmeSgpOworICAgIGlmICghdmVyaWZpY2F0aW9uUmVzdWx0LnJl
c3VsdCkKKyAgICAgICAgcmV0dXJuIHtmYWlsdXJlOiBuZXcgVHlwZU92ZXJsb2FkUmVzb2x1dGlv
bkZhaWx1cmUodHlwZSwgdmVyaWZpY2F0aW9uUmVzdWx0LnJlYXNvbil9OworCisgICAgcmV0dXJu
IHt0eXBlLCB1bmlmaWNhdGlvbkNvbnRleHR9OworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvSW50cmluc2ljcy5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL0ludHJpbnNpY3MuanMKaW5kZXggNTBkNDBjMGMwZTQ3ZTExMmJjNzRjY2ZjY2I3MDQ5
NDI3MTE2YjBmYi4uZmQzMmJjMjhiM2I1OWNhMmM5MTJjOGYyZWE0NWFiZDM1NTc1NzEzNiAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvSW50cmluc2ljcy5qcworKysg
Yi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9JbnRyaW5zaWNzLmpzCkBAIC0zMywxNSAr
MzMsNyBAQCBjbGFzcyBJbnRyaW5zaWNzIHsKICAgICAgICAgLy8gdG8gY2F0Y2ggdGhlIGludHJp
bnNpY3MgbXVzdCBiZSBiYXNlZCBvbiB0aGUgdHlwZSBuYW1lcyB0aGF0IFN0YW5kYXJkTGlicmFy
eS5qcyB1c2VzLgogICAgICAgICAvLyBGb3IgZXhhbXBsZSwgaWYgYSBuYXRpdmUgZnVuY3Rpb24g
aXMgZGVjbGFyZWQgdXNpbmcgImludCIgcmF0aGVyIHRoYW4gImludCIsIHRoZW4gd2UgbXVzdAog
ICAgICAgICAvLyB1c2UgImludCIgaGVyZSwgc2luY2Ugd2UgZG9uJ3QgeWV0IGtub3cgdGhhdCB0
aGV5IGFyZSB0aGUgc2FtZSB0eXBlLgotICAgICAgICAKLSAgICAgICAgdGhpcy5fbWFwLnNldCgK
LSAgICAgICAgICAgICJuYXRpdmUgdHlwZWRlZiB2b2lkIiwKLSAgICAgICAgICAgIHR5cGUgPT4g
ewotICAgICAgICAgICAgICAgIHRoaXMudm9pZCA9IHR5cGU7Ci0gICAgICAgICAgICAgICAgdHlw
ZS5zaXplID0gMDsKLSAgICAgICAgICAgICAgICB0eXBlLnBvcHVsYXRlRGVmYXVsdFZhbHVlID0g
KCkgPT4geyB9OwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIGZ1bmN0aW9u
IGlzQml0d2lzZUVxdWl2YWxlbnQobGVmdCwgcmlnaHQpCiAgICAgICAgIHsKICAgICAgICAgICAg
IGxldCBkb3VibGVBcnJheSA9IG5ldyBGbG9hdDY0QXJyYXkoMSk7CkBAIC01Niw1OCArNDgsODMg
QEAgY2xhc3MgSW50cmluc2ljcyB7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
fQogCisgICAgICAgIGZ1bmN0aW9uIGNhc3QodHlwZWRBcnJheUNvbnN0cnVjdG9yLCBudW1iZXIp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBhcnJheSA9IG5ldyB0eXBlZEFycmF5Q29uc3Ry
dWN0b3IoMSk7CisgICAgICAgICAgICBhcnJheVswXSA9IG51bWJlcjsKKyAgICAgICAgICAgIHJl
dHVybiBhcnJheVswXTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGJpdHdpc2VDYXN0
KHR5cGVkQXJyYXlDb25zdHJ1Y3RvcjEsIHR5cGVkQXJyYXlDb25zdHJ1Y3RvcjIsIHZhbHVlKQor
ICAgICAgICB7CisgICAgICAgICAgICBsZXQgdHlwZWRBcnJheTEgPSBuZXcgdHlwZWRBcnJheUNv
bnN0cnVjdG9yMSgxKTsKKyAgICAgICAgICAgIGxldCB0eXBlZEFycmF5MiA9IG5ldyB0eXBlZEFy
cmF5Q29uc3RydWN0b3IyKHR5cGVkQXJyYXkxLmJ1ZmZlcik7CisgICAgICAgICAgICB0eXBlZEFy
cmF5MVswXSA9IHZhbHVlOworICAgICAgICAgICAgcmV0dXJuIHR5cGVkQXJyYXkyWzBdOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2FzdFRvSGFsZihudW1iZXIpCisgICAgICAgIHsK
KyAgICAgICAgICAgIC8vIEZJWE1FOiBNYWtlIHRoaXMgbWF0aCBvYmV5IElFRUUgNzU0LgorICAg
ICAgICAgICAgaWYgKE51bWJlci5pc05hTihudW1iZXIpKQorICAgICAgICAgICAgICAgcmV0dXJu
IG51bWJlcgorICAgICAgICAgICAgaWYgKG51bWJlciA+IDY1NTA0KQorICAgICAgICAgICAgICAg
IHJldHVybiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7CisgICAgICAgICAgICBpZiAobnVtYmVy
IDwgLTY1NTA0KQorICAgICAgICAgICAgICAgIHJldHVybiBOdW1iZXIuTkVHQVRJVkVfSU5GSU5J
VFk7CisgICAgICAgICAgICBpZiAobnVtYmVyID4gMCAmJiBudW1iZXIgPCBNYXRoLnBvdygyLCAt
MjQpKQorICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgaWYgKG51bWJlciA8
IDAgJiYgbnVtYmVyID4gLU1hdGgucG93KDIsIC0yNCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IC0wOworICAgICAgICAgICAgbGV0IGRvdWJsZUFycmF5ID0gbmV3IEZsb2F0NjRBcnJheSgxKTsK
KyAgICAgICAgICAgIGxldCB1aW50QXJyYXkgPSBuZXcgVWludDhBcnJheShkb3VibGVBcnJheS5i
dWZmZXIpOworICAgICAgICAgICAgZG91YmxlQXJyYXlbMF0gPSBudW1iZXI7CisgICAgICAgICAg
ICBsZXQgc2lnbiA9IHVpbnRBcnJheVs3XSAmIDB4ODA7CisgICAgICAgICAgICBsZXQgZXhwb25l
bnQgPSAoKHVpbnRBcnJheVs3XSAmIDB4N2YpIDw8IDQpIHwgKCh1aW50QXJyYXlbNl0gJiAweGYw
KSA+Pj4gNCk7CisgICAgICAgICAgICBsZXQgc2lnbmlmaWNhbmQgPSAoKHVpbnRBcnJheVs2XSAm
IDB4MGYpIDw8IDYpIHwgKCh1aW50QXJyYXlbNV0gJiAweGZjKSA+Pj4gMik7CisKKyAgICAgICAg
ICAgIGlmICgoZXhwb25lbnQgLSAxMDIzKSA8IC0xNCkgeworICAgICAgICAgICAgICAgIGV4cG9u
ZW50ID0gMDsKKyAgICAgICAgICAgICAgICBzaWduaWZpY2FuZCA9IChNYXRoLmFicyhudW1iZXIp
ICogTWF0aC5wb3coMiwgMjQpKSA+Pj4gMDsKKyAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBN
YXRoLnBvdygyLCAtMTQpICogc2lnbmlmaWNhbmQgLyAxMDI0OworICAgICAgICAgICAgICAgIGlm
IChzaWduICE9IDApCisgICAgICAgICAgICAgICAgICAgIHZhbHVlICo9IC0xOworICAgICAgICAg
ICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZG91Ymxl
QXJyYXlbMF0gPSAwOworCisgICAgICAgICAgICB1aW50QXJyYXlbN10gfD0gc2lnbjsKKyAgICAg
ICAgICAgIHVpbnRBcnJheVs3XSB8PSAoZXhwb25lbnQgPj4+IDQpOworICAgICAgICAgICAgdWlu
dEFycmF5WzZdIHw9ICgoZXhwb25lbnQgPDwgNCkgJiAweGYwKTsKKyAgICAgICAgICAgIHVpbnRB
cnJheVs2XSB8PSAoc2lnbmlmaWNhbmQgPj4+IDYpOworICAgICAgICAgICAgdWludEFycmF5WzVd
IHw9ICgoc2lnbmlmaWNhbmQgPDwgMikgJiAweGZjKTsKKworICAgICAgICAgICAgcmV0dXJuIGRv
dWJsZUFycmF5WzBdOworICAgICAgICB9CisKICAgICAgICAgdGhpcy5fbWFwLnNldCgKLSAgICAg
ICAgICAgICJuYXRpdmUgdHlwZWRlZiBpbnQiLAorICAgICAgICAgICAgIm5hdGl2ZSB0eXBlZGVm
IHZvaWQiLAogICAgICAgICAgICAgdHlwZSA9PiB7Ci0gICAgICAgICAgICAgICAgdGhpcy5pbnQg
PSB0eXBlOwotICAgICAgICAgICAgICAgIHR5cGUuaXNQcmltaXRpdmUgPSB0cnVlOwotICAgICAg
ICAgICAgICAgIHR5cGUuaXNJbnQgPSB0cnVlOwotICAgICAgICAgICAgICAgIHR5cGUuaXNOdW1i
ZXIgPSB0cnVlOwotICAgICAgICAgICAgICAgIHR5cGUuaXNTaWduZWQgPSB0cnVlOwotICAgICAg
ICAgICAgICAgIHR5cGUuY2FuUmVwcmVzZW50ID0gdmFsdWUgPT4gaXNCaXR3aXNlRXF1aXZhbGVu
dCh2YWx1ZSB8IDAsIHZhbHVlKTsKLSAgICAgICAgICAgICAgICB0eXBlLnNpemUgPSAxOwotICAg
ICAgICAgICAgICAgIHR5cGUuZGVmYXVsdFZhbHVlID0gMDsKLSAgICAgICAgICAgICAgICB0eXBl
LmNyZWF0ZUxpdGVyYWwgPSAob3JpZ2luLCB2YWx1ZSkgPT4gSW50TGl0ZXJhbC53aXRoVHlwZShv
cmlnaW4sIHZhbHVlIHwgMCwgdHlwZSk7Ci0gICAgICAgICAgICAgICAgdHlwZS5zdWNjZXNzb3JW
YWx1ZSA9IHZhbHVlID0+ICh2YWx1ZSArIDEpIHwgMDsKLSAgICAgICAgICAgICAgICB0eXBlLnZh
bHVlc0VxdWFsID0gKGEsIGIpID0+IGEgPT09IGI7Ci0gICAgICAgICAgICAgICAgdHlwZS5wb3B1
bGF0ZURlZmF1bHRWYWx1ZSA9IChidWZmZXIsIG9mZnNldCkgPT4gYnVmZmVyLnNldChvZmZzZXQs
IDApOwotICAgICAgICAgICAgICAgIHR5cGUuZm9ybWF0VmFsdWVGcm9tSW50TGl0ZXJhbCA9IHZh
bHVlID0+IHZhbHVlIHwgMDsKLSAgICAgICAgICAgICAgICB0eXBlLmZvcm1hdFZhbHVlRnJvbVVp
bnRMaXRlcmFsID0gdmFsdWUgPT4gdmFsdWUgfCAwOwotICAgICAgICAgICAgICAgIHR5cGUuYWxs
VmFsdWVzID0gZnVuY3Rpb24qKCkgeyAKLSAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9
IDA7IGkgPD0gMHhmZmZmZmZmZjsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsZXQg
dmFsdWUgPSBpIHwgMDsKLSAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHt2YWx1ZTogdmFs
dWUsIG5hbWU6IHZhbHVlfTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IH07CisgICAgICAgICAgICAgICAgdGhpcy52b2lkID0gdHlwZTsKKyAgICAgICAgICAgICAgICB0
eXBlLnNpemUgPSAwOworICAgICAgICAgICAgICAgIHR5cGUucG9wdWxhdGVEZWZhdWx0VmFsdWUg
PSAoKSA9PiB7IH07CiAgICAgICAgICAgICB9KTsKIAogICAgICAgICB0aGlzLl9tYXAuc2V0KAot
ICAgICAgICAgICAgIm5hdGl2ZSB0eXBlZGVmIHVpbnQiLAorICAgICAgICAgICAgIm5hdGl2ZSB0
eXBlZGVmIGJvb2wiLAogICAgICAgICAgICAgdHlwZSA9PiB7Ci0gICAgICAgICAgICAgICAgdGhp
cy51aW50ID0gdHlwZTsKKyAgICAgICAgICAgICAgICB0aGlzLmJvb2wgPSB0eXBlOwogICAgICAg
ICAgICAgICAgIHR5cGUuaXNQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICAgICAgICAgIHR5cGUu
aXNJbnQgPSB0cnVlOwotICAgICAgICAgICAgICAgIHR5cGUuaXNOdW1iZXIgPSB0cnVlOwotICAg
ICAgICAgICAgICAgIHR5cGUuaXNTaWduZWQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICB0eXBl
LmNhblJlcHJlc2VudCA9IHZhbHVlID0+IGlzQml0d2lzZUVxdWl2YWxlbnQodmFsdWUgPj4+IDAs
IHZhbHVlKTsKICAgICAgICAgICAgICAgICB0eXBlLnNpemUgPSAxOwotICAgICAgICAgICAgICAg
IHR5cGUuZGVmYXVsdFZhbHVlID0gMDsKLSAgICAgICAgICAgICAgICB0eXBlLmNyZWF0ZUxpdGVy
YWwgPSAob3JpZ2luLCB2YWx1ZSkgPT4gSW50TGl0ZXJhbC53aXRoVHlwZShvcmlnaW4sIHZhbHVl
ID4+PiAwLCB0eXBlKTsKLSAgICAgICAgICAgICAgICB0eXBlLnN1Y2Nlc3NvclZhbHVlID0gdmFs
dWUgPT4gKHZhbHVlICsgMSkgPj4+IDA7Ci0gICAgICAgICAgICAgICAgdHlwZS52YWx1ZXNFcXVh
bCA9IChhLCBiKSA9PiBhID09PSBiOwotICAgICAgICAgICAgICAgIHR5cGUucG9wdWxhdGVEZWZh
dWx0VmFsdWUgPSAoYnVmZmVyLCBvZmZzZXQpID0+IGJ1ZmZlci5zZXQob2Zmc2V0LCAwKTsKLSAg
ICAgICAgICAgICAgICB0eXBlLmZvcm1hdFZhbHVlRnJvbUludExpdGVyYWwgPSB2YWx1ZSA9PiB2
YWx1ZSA+Pj4gMDsKLSAgICAgICAgICAgICAgICB0eXBlLmZvcm1hdFZhbHVlRnJvbVVpbnRMaXRl
cmFsID0gdmFsdWUgPT4gdmFsdWUgPj4+IDA7Ci0gICAgICAgICAgICAgICAgdHlwZS5hbGxWYWx1
ZXMgPSBmdW5jdGlvbiooKSB7IAotICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsg
aSA8PSAweGZmZmZmZmZmOyArK2kpCi0gICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCB7dmFs
dWU6IGksIG5hbWU6IGl9OwotICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgdHlw
ZS5wb3B1bGF0ZURlZmF1bHRWYWx1ZSA9IChidWZmZXIsIG9mZnNldCkgPT4gYnVmZmVyLnNldChv
ZmZzZXQsIGZhbHNlKTsKICAgICAgICAgICAgIH0pOwogCiAgICAgICAgIHRoaXMuX21hcC5zZXQo
CiAgICAgICAgICAgICAibmF0aXZlIHR5cGVkZWYgdWNoYXIiLAogICAgICAgICAgICAgdHlwZSA9
PiB7CiAgICAgICAgICAgICAgICAgdGhpcy51Y2hhciA9IHR5cGU7CisgICAgICAgICAgICAgICAg
dHlwZS5pc1ByaW1pdGl2ZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgdHlwZS5pc0ludCA9IHRy
dWU7CiAgICAgICAgICAgICAgICAgdHlwZS5pc051bWJlciA9IHRydWU7CiAgICAgICAgICAgICAg
ICAgdHlwZS5pc1NpZ25lZCA9IGZhbHNlOwpAQCAtMTI2LDE0OSArMTQzLDI5NSBAQCBjbGFzcyBJ
bnRyaW5zaWNzIHsKICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgfSk7CiAKKworICAg
ICAgICAgICAgdGhpcy5fbWFwLnNldCgKKyAgICAgICAgICAgICAibmF0aXZlIHR5cGVkZWYgdXNo
b3J0IiwKKyAgICAgICAgICAgICB0eXBlID0+IHsKKyAgICAgICAgICAgICAgICAgdGhpcy51c2hv
cnQgPSB0eXBlOworICAgICAgICAgICAgICAgICB0eXBlLmlzUHJpbWl0aXZlID0gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICAgdHlwZS5pc0ludCA9IHRydWU7CisgICAgICAgICAgICAgICAgIHR5cGUu
aXNOdW1iZXIgPSB0cnVlOworICAgICAgICAgICAgICAgICB0eXBlLmlzU2lnbmVkID0gZmFsc2U7
CisgICAgICAgICAgICAgICAgIHR5cGUuY2FuUmVwcmVzZW50ID0gdmFsdWUgPT4gaXNCaXR3aXNl
RXF1aXZhbGVudCh2YWx1ZSAmIDB4ZmZmZiwgdmFsdWUpOworICAgICAgICAgICAgICAgICB0eXBl
LnNpemUgPSAxOworICAgICAgICAgICAgICAgICB0eXBlLmRlZmF1bHRWYWx1ZSA9IDA7CisgICAg
ICAgICAgICAgICAgIHR5cGUuY3JlYXRlTGl0ZXJhbCA9IChvcmlnaW4sIHZhbHVlKSA9PiBJbnRM
aXRlcmFsLndpdGhUeXBlKG9yaWdpbiwgdmFsdWUgJiAweGZmZmYsIHR5cGUpOworICAgICAgICAg
ICAgICAgICB0eXBlLnN1Y2Nlc3NvclZhbHVlID0gdmFsdWUgPT4gKHZhbHVlICsgMSkgJiAweGZm
ZmY7CisgICAgICAgICAgICAgICAgIHR5cGUudmFsdWVzRXF1YWwgPSAoYSwgYikgPT4gYSA9PT0g
YjsKKyAgICAgICAgICAgICAgICAgdHlwZS5wb3B1bGF0ZURlZmF1bHRWYWx1ZSA9IChidWZmZXIs
IG9mZnNldCkgPT4gYnVmZmVyLnNldChvZmZzZXQsIDApOworICAgICAgICAgICAgICAgICB0eXBl
LmZvcm1hdFZhbHVlRnJvbUludExpdGVyYWwgPSB2YWx1ZSA9PiB2YWx1ZSAmIDB4ZmZmZjsKKyAg
ICAgICAgICAgICAgICAgdHlwZS5mb3JtYXRWYWx1ZUZyb21VaW50TGl0ZXJhbCA9IHZhbHVlID0+
IHZhbHVlICYgMHhmZmZmOworICAgICAgICAgICAgICAgICB0eXBlLmFsbFZhbHVlcyA9IGZ1bmN0
aW9uKigpIHsKKyAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IDB4ZmZm
ZjsgKytpKQorICAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHt2YWx1ZTogaSwgbmFtZTog
aX07CisgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgfSk7CisKICAgICAgICAgdGhp
cy5fbWFwLnNldCgKLSAgICAgICAgICAgICJuYXRpdmUgdHlwZWRlZiBmbG9hdCIsCi0gICAgICAg
ICAgICB0eXBlID0+IHsKLSAgICAgICAgICAgICAgICB0aGlzLmZsb2F0ID0gdHlwZTsKLSAgICAg
ICAgICAgICAgICB0eXBlLmlzUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB0eXBl
LnNpemUgPSAxOwotICAgICAgICAgICAgICAgIHR5cGUuaXNGbG9hdGluZyA9IHRydWU7Ci0gICAg
ICAgICAgICAgICAgdHlwZS5pc051bWJlciA9IHRydWU7Ci0gICAgICAgICAgICAgICAgdHlwZS5j
YW5SZXByZXNlbnQgPSB2YWx1ZSA9PiBpc0JpdHdpc2VFcXVpdmFsZW50KE1hdGguZnJvdW5kKHZh
bHVlKSwgdmFsdWUpOwotICAgICAgICAgICAgICAgIHR5cGUucG9wdWxhdGVEZWZhdWx0VmFsdWUg
PSAoYnVmZmVyLCBvZmZzZXQpID0+IGJ1ZmZlci5zZXQob2Zmc2V0LCAwKTsKLSAgICAgICAgICAg
ICAgICB0eXBlLmZvcm1hdFZhbHVlRnJvbUludExpdGVyYWwgPSB2YWx1ZSA9PiB2YWx1ZTsKLSAg
ICAgICAgICAgICAgICB0eXBlLmZvcm1hdFZhbHVlRnJvbVVpbnRMaXRlcmFsID0gdmFsdWUgPT4g
dmFsdWU7Ci0gICAgICAgICAgICAgICAgdHlwZS5mb3JtYXRWYWx1ZUZyb21GbG9hdExpdGVyYWwg
PSB2YWx1ZSA9PiBNYXRoLmZyb3VuZCh2YWx1ZSk7Ci0gICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgICAibmF0aXZlIHR5cGVkZWYgdWludCIsCisgICAgICAgICAgICAgdHlwZSA9PiB7CisgICAg
ICAgICAgICAgICAgIHRoaXMudWludCA9IHR5cGU7CisgICAgICAgICAgICAgICAgIHR5cGUuaXNQ
cmltaXRpdmUgPSB0cnVlOworICAgICAgICAgICAgICAgICB0eXBlLmlzSW50ID0gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICAgdHlwZS5pc051bWJlciA9IHRydWU7CisgICAgICAgICAgICAgICAgIHR5
cGUuaXNTaWduZWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5jYW5SZXByZXNlbnQg
PSB2YWx1ZSA9PiBpc0JpdHdpc2VFcXVpdmFsZW50KHZhbHVlID4+PiAwLCB2YWx1ZSk7CisgICAg
ICAgICAgICAgICAgIHR5cGUuc2l6ZSA9IDE7CisgICAgICAgICAgICAgICAgIHR5cGUuZGVmYXVs
dFZhbHVlID0gMDsKKyAgICAgICAgICAgICAgICAgdHlwZS5jcmVhdGVMaXRlcmFsID0gKG9yaWdp
biwgdmFsdWUpID0+IEludExpdGVyYWwud2l0aFR5cGUob3JpZ2luLCB2YWx1ZSA+Pj4gMCwgdHlw
ZSk7CisgICAgICAgICAgICAgICAgIHR5cGUuc3VjY2Vzc29yVmFsdWUgPSB2YWx1ZSA9PiAodmFs
dWUgKyAxKSA+Pj4gMDsKKyAgICAgICAgICAgICAgICAgdHlwZS52YWx1ZXNFcXVhbCA9IChhLCBi
KSA9PiBhID09PSBiOworICAgICAgICAgICAgICAgICB0eXBlLnBvcHVsYXRlRGVmYXVsdFZhbHVl
ID0gKGJ1ZmZlciwgb2Zmc2V0KSA9PiBidWZmZXIuc2V0KG9mZnNldCwgMCk7CisgICAgICAgICAg
ICAgICAgIHR5cGUuZm9ybWF0VmFsdWVGcm9tSW50TGl0ZXJhbCA9IHZhbHVlID0+IHZhbHVlID4+
PiAwOworICAgICAgICAgICAgICAgICB0eXBlLmZvcm1hdFZhbHVlRnJvbVVpbnRMaXRlcmFsID0g
dmFsdWUgPT4gdmFsdWUgPj4+IDA7CisgICAgICAgICAgICAgICAgIHR5cGUuYWxsVmFsdWVzID0g
ZnVuY3Rpb24qKCkgeworICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0g
MHhmZmZmZmZmZjsgKytpKQorICAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHt2YWx1ZTog
aSwgbmFtZTogaX07CisgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgfSk7CiAKICAg
ICAgICAgdGhpcy5fbWFwLnNldCgKLSAgICAgICAgICAgICJuYXRpdmUgdHlwZWRlZiBib29sIiwK
LSAgICAgICAgICAgIHR5cGUgPT4gewotICAgICAgICAgICAgICAgIHRoaXMuYm9vbCA9IHR5cGU7
Ci0gICAgICAgICAgICAgICAgdHlwZS5pc1ByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgICAgICAg
ICAgdHlwZS5zaXplID0gMTsKLSAgICAgICAgICAgICAgICB0eXBlLnBvcHVsYXRlRGVmYXVsdFZh
bHVlID0gKGJ1ZmZlciwgb2Zmc2V0KSA9PiBidWZmZXIuc2V0KG9mZnNldCwgZmFsc2UpOwotICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICAgIm5hdGl2ZSB0eXBlZGVmIGNoYXIiLAorICAgICAg
ICAgICAgIHR5cGUgPT4geworICAgICAgICAgICAgICAgICB0aGlzLmNoYXIgPSB0eXBlOworICAg
ICAgICAgICAgICAgICB0eXBlLmlzUHJpbWl0aXZlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAg
dHlwZS5pc0ludCA9IHRydWU7CisgICAgICAgICAgICAgICAgIHR5cGUuaXNOdW1iZXIgPSB0cnVl
OworICAgICAgICAgICAgICAgICB0eXBlLmlzU2lnbmVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICAgdHlwZS5jYW5SZXByZXNlbnQgPSB2YWx1ZSA9PiBpc0JpdHdpc2VFcXVpdmFsZW50KGNhc3Qo
SW50OEFycmF5LCB2YWx1ZSksIHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgdHlwZS5zaXplID0g
MTsKKyAgICAgICAgICAgICAgICAgdHlwZS5kZWZhdWx0VmFsdWUgPSAwOworICAgICAgICAgICAg
ICAgICB0eXBlLmNyZWF0ZUxpdGVyYWwgPSAob3JpZ2luLCB2YWx1ZSkgPT4gSW50TGl0ZXJhbC53
aXRoVHlwZShvcmlnaW4sIGNhc3QoSW50OEFycmF5LCB2YWx1ZSksIHR5cGUpOworICAgICAgICAg
ICAgICAgICB0eXBlLnN1Y2Nlc3NvclZhbHVlID0gdmFsdWUgPT4gY2FzdChJbnQ4QXJyYXksIHZh
bHVlICsgMSk7CisgICAgICAgICAgICAgICAgIHR5cGUudmFsdWVzRXF1YWwgPSAoYSwgYikgPT4g
YSA9PT0gYjsKKyAgICAgICAgICAgICAgICAgdHlwZS5wb3B1bGF0ZURlZmF1bHRWYWx1ZSA9IChi
dWZmZXIsIG9mZnNldCkgPT4gYnVmZmVyLnNldChvZmZzZXQsIDApOworICAgICAgICAgICAgICAg
ICB0eXBlLmZvcm1hdFZhbHVlRnJvbUludExpdGVyYWwgPSB2YWx1ZSA9PiBjYXN0KEludDhBcnJh
eSwgdmFsdWUpOworICAgICAgICAgICAgICAgICB0eXBlLmZvcm1hdFZhbHVlRnJvbVVpbnRMaXRl
cmFsID0gdmFsdWUgPT4gY2FzdChJbnQ4QXJyYXksIHZhbHVlKTsKKyAgICAgICAgICAgICAgICAg
dHlwZS5hbGxWYWx1ZXMgPSBmdW5jdGlvbiooKSB7CisgICAgICAgICAgICAgICAgICAgICBmb3Ig
KGxldCBpID0gMDsgaSA8PSAweGZmOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICBs
ZXQgdmFsdWUgPSBjYXN0KEludDhBcnJheSwgaSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
eWllbGQge3ZhbHVlOiB2YWx1ZSwgbmFtZTogdmFsdWV9OworICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgIH0pOworCisgICAgICAgIHRoaXMu
X21hcC5zZXQoCisgICAgICAgICAgICAgIm5hdGl2ZSB0eXBlZGVmIHNob3J0IiwKKyAgICAgICAg
ICAgICB0eXBlID0+IHsKKyAgICAgICAgICAgICAgICAgdGhpcy5zaG9ydCA9IHR5cGU7CisgICAg
ICAgICAgICAgICAgIHR5cGUuaXNQcmltaXRpdmUgPSB0cnVlOworICAgICAgICAgICAgICAgICB0
eXBlLmlzSW50ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5pc051bWJlciA9IHRydWU7
CisgICAgICAgICAgICAgICAgIHR5cGUuaXNTaWduZWQgPSB0cnVlOworICAgICAgICAgICAgICAg
ICB0eXBlLmNhblJlcHJlc2VudCA9IHZhbHVlID0+IGlzQml0d2lzZUVxdWl2YWxlbnQoY2FzdChJ
bnQxNkFycmF5LCB2YWx1ZSksIHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgdHlwZS5zaXplID0g
MTsKKyAgICAgICAgICAgICAgICAgdHlwZS5kZWZhdWx0VmFsdWUgPSAwOworICAgICAgICAgICAg
ICAgICB0eXBlLmNyZWF0ZUxpdGVyYWwgPSAob3JpZ2luLCB2YWx1ZSkgPT4gSW50TGl0ZXJhbC53
aXRoVHlwZShvcmlnaW4sIGNhc3QoSW50MTZBcnJheSwgdmFsdWUpLCB0eXBlKTsKKyAgICAgICAg
ICAgICAgICAgdHlwZS5zdWNjZXNzb3JWYWx1ZSA9IHZhbHVlID0+IGNhc3QoSW50MTZBcnJheSwg
dmFsdWUgKyAxKTsKKyAgICAgICAgICAgICAgICAgdHlwZS52YWx1ZXNFcXVhbCA9IChhLCBiKSA9
PiBhID09PSBiOworICAgICAgICAgICAgICAgICB0eXBlLnBvcHVsYXRlRGVmYXVsdFZhbHVlID0g
KGJ1ZmZlciwgb2Zmc2V0KSA9PiBidWZmZXIuc2V0KG9mZnNldCwgMCk7CisgICAgICAgICAgICAg
ICAgIHR5cGUuZm9ybWF0VmFsdWVGcm9tSW50TGl0ZXJhbCA9IHZhbHVlID0+IGNhc3QoSW50MTZB
cnJheSwgdmFsdWUpOworICAgICAgICAgICAgICAgICB0eXBlLmZvcm1hdFZhbHVlRnJvbVVpbnRM
aXRlcmFsID0gdmFsdWUgPT4gY2FzdChJbnQxNkFycmF5LCB2YWx1ZSk7CisgICAgICAgICAgICAg
ICAgIHR5cGUuYWxsVmFsdWVzID0gZnVuY3Rpb24qKCkgeworICAgICAgICAgICAgICAgICAgICAg
Zm9yIChsZXQgaSA9IDA7IGkgPD0gMHhmZmZmOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBsZXQgdmFsdWUgPSBjYXN0KEludDE2QXJyYXksIGkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgIHlpZWxkIHt2YWx1ZTogdmFsdWUsIG5hbWU6IHZhbHVlfTsKKyAgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICB9KTsKKworICAgICAg
ICB0aGlzLl9tYXAuc2V0KAorICAgICAgICAgICAgICJuYXRpdmUgdHlwZWRlZiBpbnQiLAorICAg
ICAgICAgICAgIHR5cGUgPT4geworICAgICAgICAgICAgICAgICB0aGlzLmludCA9IHR5cGU7Cisg
ICAgICAgICAgICAgICAgIHR5cGUuaXNQcmltaXRpdmUgPSB0cnVlOworICAgICAgICAgICAgICAg
ICB0eXBlLmlzSW50ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5pc051bWJlciA9IHRy
dWU7CisgICAgICAgICAgICAgICAgIHR5cGUuaXNTaWduZWQgPSB0cnVlOworICAgICAgICAgICAg
ICAgICB0eXBlLmNhblJlcHJlc2VudCA9IHZhbHVlID0+IGlzQml0d2lzZUVxdWl2YWxlbnQodmFs
dWUgfCAwLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgIHR5cGUuc2l6ZSA9IDE7CisgICAgICAg
ICAgICAgICAgIHR5cGUuZGVmYXVsdFZhbHVlID0gMDsKKyAgICAgICAgICAgICAgICAgdHlwZS5j
cmVhdGVMaXRlcmFsID0gKG9yaWdpbiwgdmFsdWUpID0+IEludExpdGVyYWwud2l0aFR5cGUob3Jp
Z2luLCB2YWx1ZSB8IDAsIHR5cGUpOworICAgICAgICAgICAgICAgICB0eXBlLnN1Y2Nlc3NvclZh
bHVlID0gdmFsdWUgPT4gKHZhbHVlICsgMSkgfCAwOworICAgICAgICAgICAgICAgICB0eXBlLnZh
bHVlc0VxdWFsID0gKGEsIGIpID0+IGEgPT09IGI7CisgICAgICAgICAgICAgICAgIHR5cGUucG9w
dWxhdGVEZWZhdWx0VmFsdWUgPSAoYnVmZmVyLCBvZmZzZXQpID0+IGJ1ZmZlci5zZXQob2Zmc2V0
LCAwKTsKKyAgICAgICAgICAgICAgICAgdHlwZS5mb3JtYXRWYWx1ZUZyb21JbnRMaXRlcmFsID0g
dmFsdWUgPT4gdmFsdWUgfCAwOworICAgICAgICAgICAgICAgICB0eXBlLmZvcm1hdFZhbHVlRnJv
bVVpbnRMaXRlcmFsID0gdmFsdWUgPT4gdmFsdWUgfCAwOworICAgICAgICAgICAgICAgICB0eXBl
LmFsbFZhbHVlcyA9IGZ1bmN0aW9uKigpIHsKKyAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0
IGkgPSAwOyBpIDw9IDB4ZmZmZmZmZmY7ICsraSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
IGxldCB2YWx1ZSA9IGkgfCAwOworICAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHt2YWx1
ZTogdmFsdWUsIG5hbWU6IHZhbHVlfTsKKyAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgfTsKKyAgICAgICAgICAgICB9KTsKKworICAgICAgICAgdGhpcy5fbWFwLnNldCgK
KyAgICAgICAgICAgICAibmF0aXZlIHR5cGVkZWYgaGFsZiIsCisgICAgICAgICAgICAgdHlwZSA9
PiB7CisgICAgICAgICAgICAgICAgIHRoaXMuaGFsZiA9IHR5cGU7CisgICAgICAgICAgICAgICAg
IHR5cGUuaXNQcmltaXRpdmUgPSB0cnVlOworICAgICAgICAgICAgICAgICB0eXBlLnNpemUgPSAx
OworICAgICAgICAgICAgICAgICB0eXBlLmlzRmxvYXRpbmcgPSB0cnVlOworICAgICAgICAgICAg
ICAgICB0eXBlLmlzTnVtYmVyID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5jYW5SZXBy
ZXNlbnQgPSB2YWx1ZSA9PiBpc0JpdHdpc2VFcXVpdmFsZW50KGNhc3RUb0hhbGYodmFsdWUpLCB2
YWx1ZSk7CisgICAgICAgICAgICAgICAgIHR5cGUucG9wdWxhdGVEZWZhdWx0VmFsdWUgPSAoYnVm
ZmVyLCBvZmZzZXQpID0+IGJ1ZmZlci5zZXQob2Zmc2V0LCAwKTsKKyAgICAgICAgICAgICAgICAg
dHlwZS5mb3JtYXRWYWx1ZUZyb21JbnRMaXRlcmFsID0gdmFsdWUgPT4gdmFsdWU7CisgICAgICAg
ICAgICAgICAgIHR5cGUuZm9ybWF0VmFsdWVGcm9tVWludExpdGVyYWwgPSB2YWx1ZSA9PiB2YWx1
ZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5mb3JtYXRWYWx1ZUZyb21GbG9hdExpdGVyYWwgPSB2
YWx1ZSA9PiBjYXN0VG9IYWxmKHZhbHVlKTsKKyAgICAgICAgICAgICB9KTsKKworICAgICAgICAg
dGhpcy5fbWFwLnNldCgKKyAgICAgICAgICAgICAibmF0aXZlIHR5cGVkZWYgZmxvYXQiLAorICAg
ICAgICAgICAgIHR5cGUgPT4geworICAgICAgICAgICAgICAgICB0aGlzLmZsb2F0ID0gdHlwZTsK
KyAgICAgICAgICAgICAgICAgdHlwZS5pc1ByaW1pdGl2ZSA9IHRydWU7CisgICAgICAgICAgICAg
ICAgIHR5cGUuc2l6ZSA9IDE7CisgICAgICAgICAgICAgICAgIHR5cGUuaXNGbG9hdGluZyA9IHRy
dWU7CisgICAgICAgICAgICAgICAgIHR5cGUuaXNOdW1iZXIgPSB0cnVlOworICAgICAgICAgICAg
ICAgICB0eXBlLmNhblJlcHJlc2VudCA9IHZhbHVlID0+IGlzQml0d2lzZUVxdWl2YWxlbnQoTWF0
aC5mcm91bmQodmFsdWUpLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgIHR5cGUucG9wdWxhdGVE
ZWZhdWx0VmFsdWUgPSAoYnVmZmVyLCBvZmZzZXQpID0+IGJ1ZmZlci5zZXQob2Zmc2V0LCAwKTsK
KyAgICAgICAgICAgICAgICAgdHlwZS5mb3JtYXRWYWx1ZUZyb21JbnRMaXRlcmFsID0gdmFsdWUg
PT4gdmFsdWU7CisgICAgICAgICAgICAgICAgIHR5cGUuZm9ybWF0VmFsdWVGcm9tVWludExpdGVy
YWwgPSB2YWx1ZSA9PiB2YWx1ZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5mb3JtYXRWYWx1ZUZy
b21GbG9hdExpdGVyYWwgPSB2YWx1ZSA9PiBNYXRoLmZyb3VuZCh2YWx1ZSk7CisgICAgICAgICAg
ICAgfSk7CisKKyAgICAgICAgdGhpcy5fbWFwLnNldCgKKyAgICAgICAgICAgICAibmF0aXZlIHR5
cGVkZWYgYXRvbWljX2ludCIsCisgICAgICAgICAgICAgdHlwZSA9PiB7CisgICAgICAgICAgICAg
ICAgIHRoaXMuYXRvbWljX2ludCA9IHR5cGU7CisgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBG
aWd1cmUgb3V0IHdoYXQgdG8gcHV0IGhlcmUuCisgICAgICAgICAgICAgfSk7CisKKyAgICAgICAg
dGhpcy5fbWFwLnNldCgKKyAgICAgICAgICAgICAibmF0aXZlIHR5cGVkZWYgYXRvbWljX3VpbnQi
LAorICAgICAgICAgICAgIHR5cGUgPT4geworICAgICAgICAgICAgICAgICB0aGlzLmF0b21pY191
aW50ID0gdHlwZTsKKyAgICAgICAgICAgICAgICAgLy8gRklYTUU6IEZpZ3VyZSBvdXQgd2hhdCB0
byBwdXQgaGVyZS4KKyAgICAgICAgICAgICB9KTsKIAogICAgICAgICBmb3IgKGxldCB2ZWN0b3JU
eXBlIG9mIFZlY3RvckVsZW1lbnRUeXBlcykgewotICAgICAgICAgICAgZm9yIChsZXQgdmVjdG9y
U2l6ZSBvZiBWZWN0b3JFbGVtZW50U2l6ZXMpCi0gICAgICAgICAgICAgICAgdGhpcy5fbWFwLnNl
dChgbmF0aXZlIHR5cGVkZWYgdmVjdG9yPCR7dmVjdG9yVHlwZX0sICR7dmVjdG9yU2l6ZX0+YCwg
dHlwZSA9PiB7fSk7CisgICAgICAgICAgICBmb3IgKGxldCB2ZWN0b3JTaXplIG9mIFZlY3RvckVs
ZW1lbnRTaXplcykgeworICAgICAgICAgICAgICAgIHRoaXMuX21hcC5zZXQoYG5hdGl2ZSB0eXBl
ZGVmIHZlY3Rvcjwke3ZlY3RvclR5cGV9LCAke3ZlY3RvclNpemV9PmAsIHR5cGUgPT4geworICAg
ICAgICAgICAgICAgICAgICB0aGlzW2B2ZWN0b3I8JHt2ZWN0b3JUeXBlfSwgJHt2ZWN0b3JTaXpl
fT5gXSA9IHR5cGU7CisgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBGaWd1cmUgb3V0IHdo
YXQgdG8gcHV0IGhlcmUuCisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9CiAgICAg
ICAgIH0KLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJu
YXRpdmUgb3BlcmF0b3IgaW50KHVpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAg
ICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW3ZhbHVlXSkgPT4gRVB0ci5ib3godmFs
dWUubG9hZFZhbHVlKCkgfCAwKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAg
ICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBvcGVyYXRvciBpbnQodWNoYXIp
IiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50
YXRpb24gPSAoW3ZhbHVlXSkgPT4gRVB0ci5ib3godmFsdWUubG9hZFZhbHVlKCkgfCAwKTsKICAg
ICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAg
ICAgICAgIm5hdGl2ZSBvcGVyYXRvciBpbnQoZmxvYXQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4g
ewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW3ZhbHVlXSkgPT4gRVB0
ci5ib3godmFsdWUubG9hZFZhbHVlKCkgfCAwKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAK
KwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBvcGVyYXRvciB1
aW50KGludCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5p
bXBsZW1lbnRhdGlvbiA9IChbdmFsdWVdKSA9PiBFUHRyLmJveCh2YWx1ZS5sb2FkVmFsdWUoKSA+
Pj4gMCk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNl
dCgKICAgICAgICAgICAgICJuYXRpdmUgb3BlcmF0b3IgdWludCh1Y2hhcikiLAogICAgICAgICAg
ICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbdmFs
dWVdKSA9PiBFUHRyLmJveCh2YWx1ZS5sb2FkVmFsdWUoKSA+Pj4gMCk7CiAgICAgICAgICAgICB9
KTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRp
dmUgb3BlcmF0b3IgdWludChmbG9hdCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAg
ICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbdmFsdWVdKSA9PiBFUHRyLmJveCh2YWx1
ZS5sb2FkVmFsdWUoKSA+Pj4gMCk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgCisKICAgICAg
ICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUgb3BlcmF0b3IgdWNoYXIoaW50
KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVu
dGF0aW9uID0gKFt2YWx1ZV0pID0+IEVQdHIuYm94KHZhbHVlLmxvYWRWYWx1ZSgpICYgMHhmZik7
CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAg
ICAgICAgICAgICJuYXRpdmUgb3BlcmF0b3IgdWNoYXIodWludCkiLAogICAgICAgICAgICAgZnVu
YyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbdmFsdWVdKSA9
PiBFUHRyLmJveCh2YWx1ZS5sb2FkVmFsdWUoKSAmIDB4ZmYpOwogICAgICAgICAgICAgfSk7Ci0g
ICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIG9w
ZXJhdG9yIHVjaGFyKGZsb2F0KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAg
ICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFt2YWx1ZV0pID0+IEVQdHIuYm94KHZhbHVlLmxv
YWRWYWx1ZSgpICYgMHhmZik7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgCisKICAgICAgICAg
dGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUgb3BlcmF0b3IgZmxvYXQoaW50KSIs
CiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0
aW9uID0gKFt2YWx1ZV0pID0+IEVQdHIuYm94KE1hdGguZnJvdW5kKHZhbHVlLmxvYWRWYWx1ZSgp
KSk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgK
ICAgICAgICAgICAgICJuYXRpdmUgb3BlcmF0b3IgZmxvYXQodWludCkiLAogICAgICAgICAgICAg
ZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbdmFsdWVd
KSA9PiBFUHRyLmJveChNYXRoLmZyb3VuZCh2YWx1ZS5sb2FkVmFsdWUoKSkpOwogICAgICAgICAg
ICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAi
bmF0aXZlIG9wZXJhdG9yIGZsb2F0KHVjaGFyKSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAg
ICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFt2YWx1ZV0pID0+IEVQdHIuYm94
KE1hdGguZnJvdW5kKHZhbHVlLmxvYWRWYWx1ZSgpKSk7CiAgICAgICAgICAgICB9KTsKLSAgICAg
ICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUgaW50IG9w
ZXJhdG9yKyhpbnQsaW50KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAg
ICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+CiAgICAgICAgICAgICAg
ICAgICAgIEVQdHIuYm94KChsZWZ0LmxvYWRWYWx1ZSgpICsgcmlnaHQubG9hZFZhbHVlKCkpIHwg
MCk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgK
ICAgICAgICAgICAgICJuYXRpdmUgdWludCBvcGVyYXRvcisodWludCx1aW50KSIsCiAgICAgICAg
ICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFts
ZWZ0LCByaWdodF0pID0+CiAgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KChsZWZ0LmxvYWRW
YWx1ZSgpICsgcmlnaHQubG9hZFZhbHVlKCkpID4+PiAwKTsKICAgICAgICAgICAgIH0pOwotICAg
ICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBmbG9h
dCBvcGVyYXRvcisoZmxvYXQsZmxvYXQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAg
ICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAg
ICAgICAgICAgICAgICAgRVB0ci5ib3goTWF0aC5mcm91bmQobGVmdC5sb2FkVmFsdWUoKSArIHJp
Z2h0LmxvYWRWYWx1ZSgpKSk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgCisKICAgICAgICAg
dGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUgaW50IG9wZXJhdG9yLShpbnQsaW50
KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVu
dGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+CiAgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94
KChsZWZ0LmxvYWRWYWx1ZSgpIC0gcmlnaHQubG9hZFZhbHVlKCkpIHwgMCk7CiAgICAgICAgICAg
ICB9KTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJu
YXRpdmUgdWludCBvcGVyYXRvci0odWludCx1aW50KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsK
ICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+
CiAgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KChsZWZ0LmxvYWRWYWx1ZSgpIC0gcmlnaHQu
bG9hZFZhbHVlKCkpID4+PiAwKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAg
ICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBmbG9hdCBvcGVyYXRvci0oZmxv
YXQsZmxvYXQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMu
aW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAg
RVB0ci5ib3goTWF0aC5mcm91bmQobGVmdC5sb2FkVmFsdWUoKSAtIHJpZ2h0LmxvYWRWYWx1ZSgp
KSk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgK
ICAgICAgICAgICAgICJuYXRpdmUgaW50IG9wZXJhdG9yKihpbnQsaW50KSIsCiAgICAgICAgICAg
ICBmdW5jID0+IHsKQEAgLTI3NiwyMjkgKzQzOSwyMjkgQEAgY2xhc3MgSW50cmluc2ljcyB7CiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBFUHRyLmJveCgobGVmdC5sb2FkVmFsdWUoKSAqIHJp
Z2h0LmxvYWRWYWx1ZSgpKSB8IDApOwogICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICB9
KTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRp
dmUgdWludCBvcGVyYXRvcioodWludCx1aW50KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAg
ICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+CiAg
ICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KChsZWZ0LmxvYWRWYWx1ZSgpICogcmlnaHQubG9h
ZFZhbHVlKCkpID4+PiAwKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0
aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBmbG9hdCBvcGVyYXRvciooZmxvYXQs
ZmxvYXQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1w
bGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0
ci5ib3goTWF0aC5mcm91bmQobGVmdC5sb2FkVmFsdWUoKSAqIHJpZ2h0LmxvYWRWYWx1ZSgpKSk7
CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAg
ICAgICAgICAgICJuYXRpdmUgaW50IG9wZXJhdG9yLyhpbnQsaW50KSIsCiAgICAgICAgICAgICBm
dW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCBy
aWdodF0pID0+CiAgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KChsZWZ0LmxvYWRWYWx1ZSgp
IC8gcmlnaHQubG9hZFZhbHVlKCkpIHwgMCk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgCisK
ICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUgdWludCBvcGVyYXRv
ci8odWludCx1aW50KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBm
dW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+CiAgICAgICAgICAgICAgICAg
ICAgIEVQdHIuYm94KChsZWZ0LmxvYWRWYWx1ZSgpIC8gcmlnaHQubG9hZFZhbHVlKCkpID4+PiAw
KTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAog
ICAgICAgICAgICAgIm5hdGl2ZSBpbnQgb3BlcmF0b3ImKGludCxpbnQpIiwKICAgICAgICAgICAg
IGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQs
IHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3gobGVmdC5sb2FkVmFsdWUo
KSAmIHJpZ2h0LmxvYWRWYWx1ZSgpKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAg
ICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSB1aW50IG9wZXJhdG9yJih1
aW50LHVpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMu
aW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAg
RVB0ci5ib3goKGxlZnQubG9hZFZhbHVlKCkgJiByaWdodC5sb2FkVmFsdWUoKSkgPj4+IDApOwog
ICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAg
ICAgICAgICAibmF0aXZlIGludCBvcGVyYXRvcnwoaW50LGludCkiLAogICAgICAgICAgICAgZnVu
YyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmln
aHRdKSA9PgogICAgICAgICAgICAgICAgICAgICBFUHRyLmJveChsZWZ0LmxvYWRWYWx1ZSgpIHwg
cmlnaHQubG9hZFZhbHVlKCkpOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAg
IHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIHVpbnQgb3BlcmF0b3J8KHVpbnQs
dWludCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBs
ZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PgogICAgICAgICAgICAgICAgICAgICBFUHRy
LmJveCgobGVmdC5sb2FkVmFsdWUoKSB8IHJpZ2h0LmxvYWRWYWx1ZSgpKSA+Pj4gMCk7CiAgICAg
ICAgICAgICB9KTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAg
ICAgICJuYXRpdmUgaW50IG9wZXJhdG9yXihpbnQsaW50KSIsCiAgICAgICAgICAgICBmdW5jID0+
IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0p
ID0+CiAgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KGxlZnQubG9hZFZhbHVlKCkgXiByaWdo
dC5sb2FkVmFsdWUoKSk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgCisKICAgICAgICAgdGhp
cy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUgdWludCBvcGVyYXRvcl4odWludCx1aW50
KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVu
dGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+CiAgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94
KChsZWZ0LmxvYWRWYWx1ZSgpIF4gcmlnaHQubG9hZFZhbHVlKCkpID4+PiAwKTsKICAgICAgICAg
ICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAg
Im5hdGl2ZSBpbnQgb3BlcmF0b3I8PChpbnQsdWludCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7
CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9
PgogICAgICAgICAgICAgICAgICAgICBFUHRyLmJveChsZWZ0LmxvYWRWYWx1ZSgpIDw8IHJpZ2h0
LmxvYWRWYWx1ZSgpKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlz
Ll9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSB1aW50IG9wZXJhdG9yPDwodWludCx1aW50
KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVu
dGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+CiAgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94
KChsZWZ0LmxvYWRWYWx1ZSgpIDw8IHJpZ2h0LmxvYWRWYWx1ZSgpKSA+Pj4gMCk7CiAgICAgICAg
ICAgICB9KTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAg
ICJuYXRpdmUgaW50IG9wZXJhdG9yPj4oaW50LHVpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4g
ewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkg
PT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3gobGVmdC5sb2FkVmFsdWUoKSA+PiByaWdo
dC5sb2FkVmFsdWUoKSk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgCisKICAgICAgICAgdGhp
cy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUgdWludCBvcGVyYXRvcj4+KHVpbnQsdWlu
dCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1l
bnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PgogICAgICAgICAgICAgICAgICAgICBFUHRyLmJv
eChsZWZ0LmxvYWRWYWx1ZSgpID4+PiByaWdodC5sb2FkVmFsdWUoKSk7CiAgICAgICAgICAgICB9
KTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRp
dmUgaW50IG9wZXJhdG9yfihpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAg
ICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW3ZhbHVlXSkgPT4gRVB0ci5ib3gofnZhbHVl
LmxvYWRWYWx1ZSgpKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlz
Ll9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSB1aW50IG9wZXJhdG9yfih1aW50KSIsCiAg
ICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9u
ID0gKFt2YWx1ZV0pID0+IEVQdHIuYm94KCh+dmFsdWUubG9hZFZhbHVlKCkpID4+PiAwKTsKICAg
ICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAg
ICAgICAgIm5hdGl2ZSBmbG9hdCBvcGVyYXRvci8oZmxvYXQsZmxvYXQpIiwKICAgICAgICAgICAg
IGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQs
IHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3goTWF0aC5mcm91bmQobGVm
dC5sb2FkVmFsdWUoKSAvIHJpZ2h0LmxvYWRWYWx1ZSgpKSk7CiAgICAgICAgICAgICB9KTsKLSAg
ICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUgYm9v
bCBvcGVyYXRvcj09KGludCxpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAg
ICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAg
ICAgICAgICAgICAgRVB0ci5ib3gobGVmdC5sb2FkVmFsdWUoKSA9PSByaWdodC5sb2FkVmFsdWUo
KSk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgK
ICAgICAgICAgICAgICJuYXRpdmUgYm9vbCBvcGVyYXRvcj09KHVpbnQsdWludCkiLAogICAgICAg
ICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChb
bGVmdCwgcmlnaHRdKSA9PgogICAgICAgICAgICAgICAgICAgICBFUHRyLmJveChsZWZ0LmxvYWRW
YWx1ZSgpID09IHJpZ2h0LmxvYWRWYWx1ZSgpKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAK
KwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBib29sIG9wZXJh
dG9yPT0oYm9vbCxib29sKSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAg
ICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+CiAgICAgICAgICAgICAg
ICAgICAgIEVQdHIuYm94KGxlZnQubG9hZFZhbHVlKCkgPT0gcmlnaHQubG9hZFZhbHVlKCkpOwog
ICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAg
ICAgICAgICAibmF0aXZlIGJvb2wgb3BlcmF0b3I9PShmbG9hdCxmbG9hdCkiLAogICAgICAgICAg
ICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbbGVm
dCwgcmlnaHRdKSA9PgogICAgICAgICAgICAgICAgICAgICBFUHRyLmJveChsZWZ0LmxvYWRWYWx1
ZSgpID09IHJpZ2h0LmxvYWRWYWx1ZSgpKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwog
ICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBib29sIG9wZXJhdG9y
PChpbnQsaW50KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5j
LmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+CiAgICAgICAgICAgICAgICAgICAg
IEVQdHIuYm94KGxlZnQubG9hZFZhbHVlKCkgPCByaWdodC5sb2FkVmFsdWUoKSk7CiAgICAgICAg
ICAgICB9KTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAg
ICJuYXRpdmUgYm9vbCBvcGVyYXRvcjwodWludCx1aW50KSIsCiAgICAgICAgICAgICBmdW5jID0+
IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0p
ID0+CiAgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KGxlZnQubG9hZFZhbHVlKCkgPCByaWdo
dC5sb2FkVmFsdWUoKSk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgCisKICAgICAgICAgdGhp
cy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUgYm9vbCBvcGVyYXRvcjwoZmxvYXQsZmxv
YXQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVt
ZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5i
b3gobGVmdC5sb2FkVmFsdWUoKSA8IHJpZ2h0LmxvYWRWYWx1ZSgpKTsKICAgICAgICAgICAgIH0p
OwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2
ZSBib29sIG9wZXJhdG9yPD0oaW50LGludCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAg
ICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PgogICAg
ICAgICAgICAgICAgICAgICBFUHRyLmJveChsZWZ0LmxvYWRWYWx1ZSgpIDw9IHJpZ2h0LmxvYWRW
YWx1ZSgpKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAu
c2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBib29sIG9wZXJhdG9yPD0odWludCx1aW50KSIsCiAg
ICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9u
ID0gKFtsZWZ0LCByaWdodF0pID0+CiAgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KGxlZnQu
bG9hZFZhbHVlKCkgPD0gcmlnaHQubG9hZFZhbHVlKCkpOwogICAgICAgICAgICAgfSk7Ci0gICAg
ICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIGJvb2wg
b3BlcmF0b3I8PShmbG9hdCxmbG9hdCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAg
ICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PgogICAgICAg
ICAgICAgICAgICAgICBFUHRyLmJveChsZWZ0LmxvYWRWYWx1ZSgpIDw9IHJpZ2h0LmxvYWRWYWx1
ZSgpKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0
KAogICAgICAgICAgICAgIm5hdGl2ZSBib29sIG9wZXJhdG9yPihpbnQsaW50KSIsCiAgICAgICAg
ICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFts
ZWZ0LCByaWdodF0pID0+CiAgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KGxlZnQubG9hZFZh
bHVlKCkgPiByaWdodC5sb2FkVmFsdWUoKSk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgCisK
ICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUgYm9vbCBvcGVyYXRv
cj4odWludCx1aW50KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBm
dW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+CiAgICAgICAgICAgICAgICAg
ICAgIEVQdHIuYm94KGxlZnQubG9hZFZhbHVlKCkgPiByaWdodC5sb2FkVmFsdWUoKSk7CiAgICAg
ICAgICAgICB9KTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAg
ICAgICJuYXRpdmUgYm9vbCBvcGVyYXRvcj4oZmxvYXQsZmxvYXQpIiwKICAgICAgICAgICAgIGZ1
bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJp
Z2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3gobGVmdC5sb2FkVmFsdWUoKSA+
IHJpZ2h0LmxvYWRWYWx1ZSgpKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAg
ICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBib29sIG9wZXJhdG9yPj0oaW50
LGludCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBs
ZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PgogICAgICAgICAgICAgICAgICAgICBFUHRy
LmJveChsZWZ0LmxvYWRWYWx1ZSgpID49IHJpZ2h0LmxvYWRWYWx1ZSgpKTsKICAgICAgICAgICAg
IH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5h
dGl2ZSBib29sIG9wZXJhdG9yPj0odWludCx1aW50KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsK
ICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+
CiAgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KGxlZnQubG9hZFZhbHVlKCkgPj0gcmlnaHQu
bG9hZFZhbHVlKCkpOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMu
X21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIGJvb2wgb3BlcmF0b3I+PShmbG9hdCxmbG9h
dCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CkBAIC01MzgsNyArNzAxLDcgQEAgY2xhc3MgSW50
cmluc2ljcyB7CiAgICAgICAgIGZvciAobGV0IHNldHRlciBvZiBCdWlsdGluVmVjdG9yU2V0dGVy
LmZ1bmN0aW9ucygpKQogICAgICAgICAgICAgdGhpcy5fbWFwLnNldChzZXR0ZXIudG9TdHJpbmco
KSwgZnVuYyA9PiBzZXR0ZXIuaW5zdGFudGlhdGVJbXBsZW1lbnRhdGlvbihmdW5jKSk7CiAgICAg
fQotICAgIAorCiAgICAgYWRkKHRoaW5nKQogICAgIHsKICAgICAgICAgbGV0IGludHJpbnNpYyA9
IHRoaXMuX21hcC5nZXQodGhpbmcudG9TdHJpbmcoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYW1lQ29udGV4dC5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL05hbWVDb250ZXh0LmpzCmluZGV4IDFiYWIzZmM1NjAyNjAxMDc3YjNmYTg4NWE2
MDU0YWI4NjBiMGExOTMuLmRjNjg1NzhmZjU1NmIzMTJiMDkyN2VmM2MwZGZmYTAwNjhmMWJlNjMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05hbWVDb250ZXh0Lmpz
CisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05hbWVDb250ZXh0LmpzCkBAIC02
OSwxMSArNjksMzMgQEAgY2xhc3MgTmFtZUNvbnRleHQgewogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKKyAgICAgICAgaWYgKHRoaW5nLmtpbmQgPT0gVHlwZSkgeworICAgICAgICAg
ICAgdGhpcy5fc2V0LmFkZCh0aGluZyk7CisgICAgICAgICAgICBpZiAodGhpbmcubmFtZSA9PSAi
dmVjdG9yIikgeworICAgICAgICAgICAgICAgIGxldCBhcnJheSA9IHRoaXMuX21hcC5nZXQodGhp
bmcubmFtZSk7CisgICAgICAgICAgICAgICAgaWYgKCFhcnJheSkgeworICAgICAgICAgICAgICAg
ICAgICBhcnJheSA9IFtdOworICAgICAgICAgICAgICAgICAgICBhcnJheS5raW5kID0gVHlwZTsK
KyAgICAgICAgICAgICAgICAgICAgdGhpcy5fbWFwLnNldCh0aGluZy5uYW1lLCBhcnJheSk7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChhcnJheS5raW5kICE9IFR5cGUp
CisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9yKHRoaW5nLm9yaWdpbi5v
cmlnaW5TdHJpbmcsICJDYW5ub3QgcmV1c2UgdHlwZSBuYW1lIGZvciBmdW5jdGlvbjogIiArIHRo
aW5nLm5hbWUpOworICAgICAgICAgICAgICAgIGFycmF5LnB1c2godGhpbmcpOworICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYg
KHRoaXMuX21hcC5oYXModGhpbmcubmFtZSkpCisgICAgICAgICAgICAgICAgICAgIHRocm93IG5l
dyBXVHlwZUVycm9yKHRoaW5nLm9yaWdpbi5vcmlnaW5TdHJpbmcsICJEdXBsaWNhdGUgbmFtZTog
IiArIHRoaW5nLm5hbWUpOworICAgICAgICAgICAgICAgIHRoaXMuX21hcC5zZXQodGhpbmcubmFt
ZSwgdGhpbmcpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgICAgIAogICAgICAgICBpZiAodGhpcy5fbWFwLmhhcyh0aGluZy5uYW1lKSkKICAgICAg
ICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9yKHRoaW5nLm9yaWdpbi5vcmlnaW5TdHJpbmcsICJE
dXBsaWNhdGUgbmFtZTogIiArIHRoaW5nLm5hbWUpOwogCiAgICAgICAgIHRoaXMuX3NldC5hZGQo
dGhpbmcpOwogICAgICAgICB0aGlzLl9tYXAuc2V0KHRoaW5nLm5hbWUsIHRoaW5nKTsKKwogICAg
IH0KICAgICAKICAgICBnZXQoa2luZCwgbmFtZSkKQEAgLTEwMiw2ICsxMjQsMTAgQEAgY2xhc3Mg
TmFtZUNvbnRleHQgewogICAgICAgICAgICAgZm9yIChsZXQgZnVuYyBvZiB0aGluZykKICAgICAg
ICAgICAgICAgICB5aWVsZCBmdW5jOwogICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9IGVs
c2UgaWYgKHRoaW5nLmtpbmQgPT09IFR5cGUgJiYgKHRoaW5nIGluc3RhbmNlb2YgQXJyYXkpKSB7
CisgICAgICAgICAgICBmb3IgKGxldCB0eXBlIG9mIHRoaW5nKQorICAgICAgICAgICAgICAgIHlp
ZWxkIHR5cGU7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgeWllbGQg
dGhpbmc7CiAgICAgfQpAQCAtMTYzLDggKzE4OSw4IEBAIGNsYXNzIE5hbWVDb250ZXh0IHsKICAg
ICB7CiAgICAgICAgIGZvciAobGV0IHZhbHVlIG9mIHRoaXMuX21hcC52YWx1ZXMoKSkgewogICAg
ICAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXkpIHsKLSAgICAgICAgICAgICAgICBm
b3IgKGxldCBmdW5jIG9mIHZhbHVlKQotICAgICAgICAgICAgICAgICAgICB5aWVsZCBmdW5jOwor
ICAgICAgICAgICAgICAgIGZvciAobGV0IHRoaW5nIG9mIHZhbHVlKQorICAgICAgICAgICAgICAg
ICAgICB5aWVsZCB0aGluZzsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIHlpZWxkIHZhbHVlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvTmFtZVJlc29sdmVyLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvTmFtZVJlc29sdmVyLmpzCmluZGV4IGEyYWYxZDkzMzQ2NzI1MTcyNmM0MjdmYTA2NGI2
ZDc0YzkyMzU1NzUuLjBhM2Q2ZWUzN2Q2NGM3MjFlY2JmNjY4NWY4YmZlZDM2Nzg2MmJmNGIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05hbWVSZXNvbHZlci5qcwor
KysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYW1lUmVzb2x2ZXIuanMKQEAgLTEy
MCwxMiArMTIwLDE2IEBAIGNsYXNzIE5hbWVSZXNvbHZlciBleHRlbmRzIFZpc2l0b3IgewogICAg
IAogICAgIHZpc2l0VHlwZVJlZihub2RlKQogICAgIHsKKyAgICAgICAgc3VwZXIudmlzaXRUeXBl
UmVmKG5vZGUpOwogICAgICAgICBsZXQgdHlwZSA9IG5vZGUudHlwZTsKICAgICAgICAgaWYgKCF0
eXBlKSB7CiAgICAgICAgICAgICB0eXBlID0gdGhpcy5fbmFtZUNvbnRleHQuZ2V0KFR5cGUsIG5v
ZGUubmFtZSk7CiAgICAgICAgICAgICBpZiAoIXR5cGUpCiAgICAgICAgICAgICAgICAgdGhyb3cg
bmV3IFdUeXBlRXJyb3Iobm9kZS5vcmlnaW4ub3JpZ2luU3RyaW5nLCAiQ291bGQgbm90IGZpbmQg
dHlwZSBuYW1lZCAiICsgbm9kZS5uYW1lKTsKLSAgICAgICAgICAgIG5vZGUudHlwZSA9IHR5cGU7
CisgICAgICAgICAgICBpZiAodHlwZSBpbnN0YW5jZW9mIEFycmF5KQorICAgICAgICAgICAgICAg
IG5vZGUucG9zc2libGVPdmVybG9hZHMgPSB0eXBlOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIG5vZGUudHlwZSA9IHR5cGU7CiAgICAgICAgIH0KICAgICB9CiAgICAgCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYXRpdmVUeXBlLmpzIGIvVG9v
bHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmF0aXZlVHlwZS5qcwppbmRleCBlMmQ4NTFjYmNj
YmEzYTk3MjM0YzdiZDM5MjkwNzgyOWNhOWUwNWYyLi4yMzgxYjVhNmIwYjAxMGUwZmRkNGRjNTM1
NTBhOGVhNmI0ZjgzNDdiIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9OYXRpdmVUeXBlLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05hdGl2
ZVR5cGUuanMKQEAgLTI1LDExICsyNSwxNCBAQAogInVzZSBzdHJpY3QiOwogCiBjbGFzcyBOYXRp
dmVUeXBlIGV4dGVuZHMgVHlwZSB7Ci0gICAgY29uc3RydWN0b3Iob3JpZ2luLCBuYW1lKQorICAg
IGNvbnN0cnVjdG9yKG9yaWdpbiwgbmFtZSwgdHlwZUFyZ3VtZW50cykKICAgICB7CisgICAgICAg
IGlmICghKHR5cGVBcmd1bWVudHMgaW5zdGFuY2VvZiBBcnJheSkpCisgICAgICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoInR5cGUgcGFyYW1ldGVycyBub3QgYXJyYXk6ICIgKyB0eXBlQXJndW1lbnRz
KTsKICAgICAgICAgc3VwZXIoKTsKICAgICAgICAgdGhpcy5fb3JpZ2luID0gb3JpZ2luOwogICAg
ICAgICB0aGlzLl9uYW1lID0gbmFtZTsKKyAgICAgICAgdGhpcy5fdHlwZUFyZ3VtZW50cyA9IHR5
cGVBcmd1bWVudHM7CiAgICAgICAgIHRoaXMuX2lzTnVtYmVyID0gZmFsc2U7CiAgICAgICAgIHRo
aXMuX2lzSW50ID0gZmFsc2U7CiAgICAgICAgIHRoaXMuX2lzRmxvYXRpbmcgPSBmYWxzZTsKQEAg
LTM4LDYgKzQxLDcgQEAgY2xhc3MgTmF0aXZlVHlwZSBleHRlbmRzIFR5cGUgewogICAgIAogICAg
IGdldCBvcmlnaW4oKSB7IHJldHVybiB0aGlzLl9vcmlnaW47IH0KICAgICBnZXQgbmFtZSgpIHsg
cmV0dXJuIHRoaXMuX25hbWU7IH0KKyAgICBnZXQgdHlwZUFyZ3VtZW50cygpIHsgcmV0dXJuIHRo
aXMuX3R5cGVBcmd1bWVudHM7IH0KICAgICBnZXQgaXNOYXRpdmUoKSB7IHJldHVybiB0cnVlOyB9
CiAgICAgCiAgICAgLy8gV2UgbGV0IEludHJpbnNpY3MuanMgc2V0IHRoZXNlIGFzIGl0IGxpa2Vz
LgpAQCAtNTIsMTkgKzU2LDE4IEBAIGNsYXNzIE5hdGl2ZVR5cGUgZXh0ZW5kcyBUeXBlIHsKICAg
ICAKICAgICB0b1N0cmluZygpCiAgICAgewotICAgICAgICByZXR1cm4gYG5hdGl2ZSB0eXBlZGVm
ICR7dGhpcy5uYW1lfWA7CisgICAgICAgIGxldCByZXN1bHQgPSBgbmF0aXZlIHR5cGVkZWYgJHt0
aGlzLm5hbWV9YDsKKyAgICAgICAgaWYgKHRoaXMudHlwZUFyZ3VtZW50cy5sZW5ndGgpCisgICAg
ICAgICAgICByZXN1bHQgKz0gIjwiICsgdGhpcy50eXBlQXJndW1lbnRzLmpvaW4oIiwiKSArICI+
IjsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCiAgICAgc3RhdGljIGNyZWF0
ZShvcmlnaW4sIG5hbWUsIHR5cGVBcmd1bWVudHMpCiAgICAgewotICAgICAgICAvLyBGSVhNRTog
Rm9yIG5hdGl2ZSB0eXBlcyBsaWtlIFRleHR1cmUxRCB0aGlzIHNob3VsZCByZXNvbHZlIHRoZSB0
eXBlIHRvIHNvbWV0aGluZyBjb25jcmV0ZSBieSBjaGFuZ2luZyB0aGUgdHlwZSBuYW1lLgotICAg
ICAgICBpZiAodHlwZUFyZ3VtZW50cy5sZW5ndGgpCi0gICAgICAgICAgICB0aHJvdyBuZXcgV1R5
cGVFcnJvcihvcmlnaW4ub3JpZ2luU3RyaW5nLCBgJHtuYW1lfTwke3R5cGVBcmd1bWVudHMuam9p
bigiLCIpfT46IFN1cHBvcnQgZm9yIG5hdGl2ZSB0eXBlcyB3aXRoIHR5cGUgYXJndW1lbnRzIGlz
IGN1cnJlbnRseSB1bmltcGxlbWVudGVkLmApOworICAgICAgICBpZiAobmFtZSA9PSAidmVjdG9y
IikKKyAgICAgICAgICAgIHJldHVybiBuZXcgVmVjdG9yVHlwZShvcmlnaW4sIG5hbWUsIHR5cGVB
cmd1bWVudHMpOwogCi0gICAgICAgIGlmIChhbGxWZWN0b3JUeXBlTmFtZXMoKS5pbmRleE9mKG5h
bWUpID4gLTEpCi0gICAgICAgICAgICByZXR1cm4gbmV3IFZlY3RvclR5cGUob3JpZ2luLCBuYW1l
KTsKLQotICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZVR5cGUob3JpZ2luLCBuYW1lKTsKKyAgICAg
ICAgcmV0dXJuIG5ldyBOYXRpdmVUeXBlKG9yaWdpbiwgbmFtZSwgdHlwZUFyZ3VtZW50cyk7CiAg
ICAgfQogfQogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QYXJz
ZS5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1BhcnNlLmpzCmluZGV4IGM0YWU5
ZGU3ZmRlODU2Mjk2OTI2MGMxNDY5YzIyYjU4NmRlNzZkZjkuLjlhMmIyMDE1ZmQzNTI0YmVhOWQ2
MDRjNTExYzI3ZWZlZjZjYzU2ZTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL1BhcnNlLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1BhcnNl
LmpzCkBAIC0zMjcsMTAgKzMyNywxMiBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4s
IG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgZnVuY3Rpb24gaXNDYWxs
RXhwcmVzc2lvbigpCiAgICAgewogICAgICAgICByZXR1cm4gbGV4ZXIudGVzdFNjb3BlKCgpID0+
IHsKLSAgICAgICAgICAgIGNvbnN1bWVLaW5kKCJpZGVudGlmaWVyIik7Ci0gICAgICAgICAgICBw
YXJzZVR5cGVBcmd1bWVudHMoKTsKLSAgICAgICAgICAgIGNvbnN1bWUoIigiKTsKLSAgICAgICAg
fSk7CisgICAgICAgICAgICAgICAgY29uc3VtZUtpbmQoImlkZW50aWZpZXIiKTsKKyAgICAgICAg
ICAgICAgICBjb25zdW1lKCIoIik7CisgICAgICAgICAgICB9KSB8fCBsZXhlci50ZXN0U2NvcGUo
KCkgPT4geworICAgICAgICAgICAgICAgIHBhcnNlVHlwZSgpOworICAgICAgICAgICAgICAgIGNv
bnN1bWUoIigiKTsKKyAgICAgICAgICAgIH0pOwogICAgIH0KICAgICAKICAgICBmdW5jdGlvbiBl
bWl0SW5jcmVtZW50KHRva2VuLCBvbGQsIGV4dHJhQXJnKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvUHJlcGFyZS5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL1ByZXBhcmUuanMKaW5kZXggN2IxNjEzOWU5NWI4MWUyZThkYTgzNTRiZDhjMTc5YjE5
MGJhZWZhMC4uZDRmMDMyNzhlOTY4MzI3MDE3NmQzNWQyMjllYjBjN2FlNWUzMDFkOCAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUHJlcGFyZS5qcworKysgYi9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QcmVwYXJlLmpzCkBAIC00MCw3ICs0MCw2IEBAIGxl
dCBwcmVwYXJlID0gKCgpID0+IHsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgZm9sZENv
bnN0ZXhwcnMocHJvZ3JhbSk7Ci0gICAgICAgIHJlbW92ZVR5cGVBcmd1bWVudHMocHJvZ3JhbSk7
CiAKICAgICAgICAgbGV0IG5hbWVSZXNvbHZlciA9IGNyZWF0ZU5hbWVSZXNvbHZlcihwcm9ncmFt
KTsKICAgICAgICAgcmVzb2x2ZU5hbWVzSW5UeXBlcyhwcm9ncmFtLCBuYW1lUmVzb2x2ZXIpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUHJvZ3JhbS5qcyBiL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Byb2dyYW0uanMKaW5kZXggMDY2MjVkOThmYzQx
ZTc0YzkzZGVjZTgwYjcwY2U1NWM3YWY3NGRkNS4uMTExNmM0ZjU3NzU2MjIxNWZkZDc0MjhhMzE3
NTc5YTkyOTE2NTQxNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
UHJvZ3JhbS5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9Qcm9ncmFtLmpz
CkBAIC00OCwxOSArNDgsMjUgQEAgY2xhc3MgUHJvZ3JhbSBleHRlbmRzIE5vZGUgewogICAgICAg
ICBpZiAoc3RhdGVtZW50IGluc3RhbmNlb2YgRnVuYykgewogICAgICAgICAgICAgbGV0IGFycmF5
ID0gdGhpcy5fZnVuY3Rpb25zLmdldChzdGF0ZW1lbnQubmFtZSk7CiAgICAgICAgICAgICBpZiAo
IWFycmF5KQotICAgICAgICAgICAgICAgIHRoaXMuX2Z1bmN0aW9ucy5zZXQoc3RhdGVtZW50Lm5h
bWUsIGFycmF5ID0gW10pOworICAgICAgICAgICAgICAgIHRoaXMuZnVuY3Rpb25zLnNldChzdGF0
ZW1lbnQubmFtZSwgYXJyYXkgPSBbXSk7CiAgICAgICAgICAgICBhcnJheS5wdXNoKHN0YXRlbWVu
dCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoc3RhdGVtZW50IGluc3RhbmNlb2YgVHlwZSkKLSAgICAg
ICAgICAgIHRoaXMuX3R5cGVzLnNldChzdGF0ZW1lbnQubmFtZSwgc3RhdGVtZW50KTsKLSAgICAg
ICAgZWxzZQorICAgICAgICB9IGVsc2UgaWYgKHN0YXRlbWVudCBpbnN0YW5jZW9mIFR5cGUpIHsK
KyAgICAgICAgICAgIGlmIChzdGF0ZW1lbnQuaXNOYXRpdmUgJiYgc3RhdGVtZW50Lm5hbWUgPT0g
InZlY3RvciIpIHsKKyAgICAgICAgICAgICAgICBsZXQgYXJyYXkgPSB0aGlzLnR5cGVzLmdldChz
dGF0ZW1lbnQubmFtZSk7CisgICAgICAgICAgICAgICAgaWYgKCFhcnJheSkKKyAgICAgICAgICAg
ICAgICAgICAgdGhpcy50eXBlcy5zZXQoc3RhdGVtZW50Lm5hbWUsIGFycmF5ID0gW10pOworICAg
ICAgICAgICAgICAgIGFycmF5LnB1c2goc3RhdGVtZW50KTsKKyAgICAgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgICAgIHRoaXMudHlwZXMuc2V0KHN0YXRlbWVudC5uYW1lLCBzdGF0ZW1lbnQp
OworICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiU3RhdGVtZW50
IGlzIG5vdCBhIGZ1bmN0aW9uIG9yIHR5cGU6ICIgKyBzdGF0ZW1lbnQpOwotICAgICAgICB0aGlz
Ll90b3BMZXZlbFN0YXRlbWVudHMucHVzaChzdGF0ZW1lbnQpOwotICAgICAgICB0aGlzLl9nbG9i
YWxOYW1lQ29udGV4dC5hZGQoc3RhdGVtZW50KTsKKyAgICAgICAgdGhpcy50b3BMZXZlbFN0YXRl
bWVudHMucHVzaChzdGF0ZW1lbnQpOworICAgICAgICB0aGlzLmdsb2JhbE5hbWVDb250ZXh0LmFk
ZChzdGF0ZW1lbnQpOwogICAgIH0KICAgICAKICAgICB0b1N0cmluZygpCiAgICAgewotICAgICAg
ICBpZiAoIXRoaXMuX3RvcExldmVsU3RhdGVtZW50cy5sZW5ndGgpCisgICAgICAgIGlmICghdGhp
cy50b3BMZXZlbFN0YXRlbWVudHMubGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuICIiOwogICAg
ICAgICByZXR1cm4gdGhpcy5fdG9wTGV2ZWxTdGF0ZW1lbnRzLmpvaW4oIjsiKSArICI7IjsKICAg
ICB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZWN1cnNpdmVU
eXBlQ2hlY2tlci5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1JlY3Vyc2l2ZVR5
cGVDaGVja2VyLmpzCmluZGV4IDkxZjc2NzQyZjYwZDE0YTM3ZTZlNjA2YzNhYjJmOWMyYzhmYWIx
MTYuLmRlM2Q1MjRiYzU0ODhjODcwNWZlYThmNjdiYWQ4N2JlY2JiOTdkZGMgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1JlY3Vyc2l2ZVR5cGVDaGVja2VyLmpzCisr
KyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1JlY3Vyc2l2ZVR5cGVDaGVja2VyLmpz
CkBAIC01MSw3ICs1MSwxMSBAQCBjbGFzcyBSZWN1cnNpdmVUeXBlQ2hlY2tlciBleHRlbmRzIFZp
c2l0b3IgewogICAgIHZpc2l0VHlwZVJlZihub2RlKQogICAgIHsKICAgICAgICAgc3VwZXIudmlz
aXRUeXBlUmVmKG5vZGUpOwotICAgICAgICBub2RlLnR5cGUudmlzaXQodGhpcyk7CisgICAgICAg
IGlmIChub2RlLnBvc3NpYmxlT3ZlcmxvYWRzKSB7CisgICAgICAgICAgICBmb3IgKGxldCBvdmVy
bG9hZCBvZiBub2RlLnBvc3NpYmxlT3ZlcmxvYWRzKQorICAgICAgICAgICAgICAgIG92ZXJsb2Fk
LnZpc2l0KHRoaXMpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG5vZGUudHlwZS52aXNp
dCh0aGlzKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL1JlbW92ZVR5cGVBcmd1bWVudHMuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9SZW1vdmVUeXBlQXJndW1lbnRzLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA3ZjkwODcwMzJlODUwZmUwZGY0NWZkN2Q3ZDhmYmFmMzM0ZmEwMGJjLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL1JlbW92ZVR5cGVBcmd1bWVudHMuanMKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLSJ1c2Ugc3Ry
aWN0IjsKLQotZnVuY3Rpb24gcmVtb3ZlVHlwZUFyZ3VtZW50cyhwcm9ncmFtKQotewotICAgIGNs
YXNzIFJlbW92ZVR5cGVBcmd1bWVudHMgZXh0ZW5kcyBWaXNpdG9yIHsKLSAgICAgICAgc3RhdGlj
IHJlc29sdmVOYW1lQW5kQXJndW1lbnRzKG5vZGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlm
ICghbm9kZS50eXBlQXJndW1lbnRzKQotICAgICAgICAgICAgICAgIHJldHVybiBub2RlLm5hbWU7
Ci0KLSAgICAgICAgICAgIHN3aXRjaCAobm9kZS5uYW1lKSB7Ci0gICAgICAgICAgICBjYXNlICJ2
ZWN0b3IiOgotICAgICAgICAgICAgICAgIGlmIChub2RlLnR5cGVBcmd1bWVudHMubGVuZ3RoICE9
IDIpCi0gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBXU3ludGF4RXJyb3Iobm9kZS5vcmln
aW5TdHJpbmcsIGAke25vZGUubmFtZX0gc2hvdWxkIGhhdmUgMiB0eXBlIGFyZ3VtZW50cywgZ290
ICR7bm9kZS50eXBlQXJndW1lbnRzLmxlbmd0aH0uYCk7Ci0KLSAgICAgICAgICAgICAgICBjb25z
dCBlbGVtZW50VHlwZU5hbWUgPSBub2RlLnR5cGVBcmd1bWVudHNbMF0ubmFtZTsKLSAgICAgICAg
ICAgICAgICBjb25zdCBsZW5ndGhWYWx1ZSA9IG5vZGUudHlwZUFyZ3VtZW50c1sxXS52YWx1ZTsK
LQotICAgICAgICAgICAgICAgIGlmIChWZWN0b3JFbGVtZW50VHlwZXMuaW5kZXhPZihlbGVtZW50
VHlwZU5hbWUpIDwgMCkKLSAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFdTeW50YXhFcnJv
cihub2RlLm9yaWdpblN0cmluZywgYCR7ZWxlbWVudFR5cGVOYW1lfSBpcyBub3QgYSB2YWxpZCB2
ZWN0b3IgZWxlbWVudCB0eXBlLmApOwotICAgICAgICAgICAgICAgIGlmIChWZWN0b3JFbGVtZW50
U2l6ZXMuaW5kZXhPZihsZW5ndGhWYWx1ZSkgPCAwKQotICAgICAgICAgICAgICAgICAgICB0aHJv
dyBuZXcgV1N5bnRheEVycm9yKG5vZGUub3JpZ2luU3RyaW5nLCBgJHtsZW5ndGhWYWx1ZX0gaXMg
bm90IGEgdmFsaWQgc2l6ZSBmb3IgdmVjdG9ycyB3aXRoIGVsZW1lbnQgdHlwZSAke2VsZW1lbnRU
eXBlTmFtZX0uYCk7Ci0KLSAgICAgICAgICAgICAgICByZXR1cm4gYCR7ZWxlbWVudFR5cGVOYW1l
fSR7bGVuZ3RoVmFsdWV9YDsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBGdXJ0aGVyIGNhc2VzIGZv
ciBtYXRyaWNlcywgdGV4dHVyZXMsIGV0Yy4KLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICAgICAgaWYgKG5vZGUudHlwZUFyZ3VtZW50cy5sZW5ndGgpCi0gICAgICAgICAgICAgICAg
ICAgIHRocm93IG5ldyBXU3ludGF4RXJyb3IoYCR7bm9kZS5uYW1lfSR7YXJndW1lbnRzLmpvaW4o
IiwgIil9IGlzIG5vdCBhIHBlcm1pdHRlZCBnZW5lcmljIHR5cGUgb3IgZnVuY3Rpb25gKTsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gbm9kZS5uYW1lOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0KLSAgICAgICAgdmlzaXRUeXBlUmVmKG5vZGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5v
ZGUuX25hbWUgPSBSZW1vdmVUeXBlQXJndW1lbnRzLnJlc29sdmVOYW1lQW5kQXJndW1lbnRzKG5v
ZGUpOwotICAgICAgICAgICAgbm9kZS5fdHlwZUFyZ3VtZW50cyA9IG51bGw7Ci0gICAgICAgIH0K
LQotICAgICAgICB2aXNpdENhbGxFeHByZXNzaW9uKG5vZGUpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIG5vZGUuX25hbWUgPSBSZW1vdmVUeXBlQXJndW1lbnRzLnJlc29sdmVOYW1lQW5kQXJndW1l
bnRzKG5vZGUpOwotICAgICAgICAgICAgaWYgKCFub2RlLl9uYW1lIHx8ICFub2RlLl9uYW1lLmxl
bmd0aCkKLSAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImxhenkiKTsKLSAgICAgICAg
ICAgIG5vZGUuX3R5cGVBcmd1bWVudHMgPSBudWxsOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
cHJvZ3JhbS52aXNpdChuZXcgUmVtb3ZlVHlwZUFyZ3VtZW50cygpKTsKLX0KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9SZXNvbHZlTmFtZXMuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXNvbHZl
TmFtZXMuanMKaW5kZXggMmU0MDJjOGQ2YzBhMzYwOTg1NjFlMDI3NWVlNTNlNzc4ZmQzODRiOC4u
YjhiNTMzNDI0NTlhZTgzOWFjZjdmMDdjMmJiYWVhOTZlOGE1NGNkZiAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmVzb2x2ZU5hbWVzLmpzCisrKyBiL1Rvb2xzL1dl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Jlc29sdmVOYW1lcy5qcwpAQCAtMzEsOCArMzEsMTMgQEAg
ZnVuY3Rpb24gY3JlYXRlTmFtZVJlc29sdmVyKHByb2dyYW0pCiAKIGZ1bmN0aW9uIHJlc29sdmVO
YW1lc0luVHlwZXMocHJvZ3JhbSwgbmFtZVJlc29sdmVyKQogewotICAgIGZvciAobGV0IHR5cGUg
b2YgcHJvZ3JhbS50eXBlcy52YWx1ZXMoKSkKLSAgICAgICAgbmFtZVJlc29sdmVyLmRvU3RhdGVt
ZW50KHR5cGUpOworICAgIGZvciAobGV0IHR5cGUgb2YgcHJvZ3JhbS50eXBlcy52YWx1ZXMoKSkg
eworICAgICAgICBpZiAodHlwZSBpbnN0YW5jZW9mIEFycmF5KSB7CisgICAgICAgICAgICBmb3Ig
KGxldCBjb25zdGl0dWVudFR5cGUgb2YgdHlwZSkKKyAgICAgICAgICAgICAgICBuYW1lUmVzb2x2
ZXIuZG9TdGF0ZW1lbnQoY29uc3RpdHVlbnRUeXBlKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICBuYW1lUmVzb2x2ZXIuZG9TdGF0ZW1lbnQodHlwZSk7CisgICAgfQogfQogCiBmdW5jdGlv
biByZXNvbHZlTmFtZXNJbkZ1bmN0aW9ucyhwcm9ncmFtLCBuYW1lUmVzb2x2ZXIpCmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXNvbHZlT3ZlcmxvYWRJbXBsLmpz
IGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmVzb2x2ZU92ZXJsb2FkSW1wbC5qcwpp
bmRleCBkMGYxZTM0ZDYxN2VhMjcyNjY0NjdjMTYxNzA3MTU0NjY0YTQ0OWFkLi43YTA5N2JjYTQ3
MGVjYjU2YTZlZTNkZWY1MmFhZjVmNzhiNTA2NTExIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9SZXNvbHZlT3ZlcmxvYWRJbXBsLmpzCisrKyBiL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL1Jlc29sdmVPdmVybG9hZEltcGwuanMKQEAgLTEwMCwzICsxMDAs
MjggQEAgZnVuY3Rpb24gcmVzb2x2ZU92ZXJsb2FkSW1wbChmdW5jdGlvbnMsIGFyZ3VtZW50VHlw
ZXMsIHJldHVyblR5cGUsIGFsbG93RW50cnlQb2kKICAgICAKICAgICByZXR1cm4ge2ZhaWx1cmVz
OiBhbWJpZ3VpdHlMaXN0Lm1hcChvdmVybG9hZCA9PiBuZXcgT3ZlcmxvYWRSZXNvbHV0aW9uRmFp
bHVyZShvdmVybG9hZC5mdW5jLCBtZXNzYWdlKSl9OwogfQorCitmdW5jdGlvbiByZXNvbHZlVHlw
ZU92ZXJsb2FkSW1wbCh0eXBlcywgdHlwZUFyZ3VtZW50cykKK3sKKyAgICBpZiAoIXR5cGVzKQor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIk51bGwgdHlwZXM7IHRoYXQgc2hvdWxkIGhhdmUgYmVl
biBjYXVnaHQgYnkgdGhlIGNhbGxlci4iKTsKKworICAgIGxldCBmYWlsdXJlcyA9IFtdOworICAg
IGxldCBzdWNjZXNzZXMgPSBbXTsKKyAgICBmb3IgKGxldCB0eXBlIG9mIHR5cGVzKSB7CisgICAg
ICAgIGxldCBvdmVybG9hZCA9IGluZmVyVHlwZXNGb3JUeXBlQXJndW1lbnRzKHR5cGUsIHR5cGVB
cmd1bWVudHMpOworICAgICAgICBpZiAob3ZlcmxvYWQuZmFpbHVyZSkKKyAgICAgICAgICAgIGZh
aWx1cmVzLnB1c2gob3ZlcmxvYWQuZmFpbHVyZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IHN1Y2Nlc3Nlcy5wdXNoKG92ZXJsb2FkKTsKKyAgICB9CisgICAgCisgICAgaWYgKCFzdWNjZXNz
ZXMubGVuZ3RoKQorICAgICAgICByZXR1cm4ge2ZhaWx1cmVzOiBmYWlsdXJlc307CisgICAgCisg
ICAgaWYgKHN1Y2Nlc3Nlcy5sZW5ndGggPT0gMSkKKyAgICAgICAgcmV0dXJuIHN1Y2Nlc3Nlc1sw
XTsKKyAgICAKKyAgICBsZXQgbWVzc2FnZSA9ICJBbWJpZ3VvdXMgb3ZlcmxvYWQgLSB0eXBlcyBt
dXR1YWxseSBhcHBsaWNhYmxlIjsKKyAgICByZXR1cm4ge2ZhaWx1cmVzOiBzdWNjZXNzZXMubWFw
KG92ZXJsb2FkID0+IG5ldyBUeXBlT3ZlcmxvYWRSZXNvbHV0aW9uRmFpbHVyZShvdmVybG9hZC50
eXBlLCBtZXNzYWdlKSl9OworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvUmVzb2x2ZVR5cGVEZWZzLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
UmVzb2x2ZVR5cGVEZWZzLmpzCmluZGV4IDkxNDNmOGUxZTAwYTA0OTgxNGI5MGEzNDVjNWFmNDUx
NDU5ZDg1NzQuLjA1NzRiZWNkNTUzMTUwOTQ3OGEyZGVmZGMyZmU3YzY4ZTYxYzNkMzUgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Jlc29sdmVUeXBlRGVmcy5qcwor
KysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXNvbHZlVHlwZURlZnMuanMKQEAg
LTI3LDggKzI3LDEzIEBACiBmdW5jdGlvbiByZXNvbHZlVHlwZURlZnNJblR5cGVzKHByb2dyYW0p
CiB7CiAgICAgbGV0IHJlc29sdmVyID0gbmV3IFR5cGVEZWZSZXNvbHZlcigpOwotICAgIGZvciAo
bGV0IHR5cGUgb2YgcHJvZ3JhbS50eXBlcy52YWx1ZXMoKSkKLSAgICAgICAgdHlwZS52aXNpdChy
ZXNvbHZlcik7CisgICAgZm9yIChsZXQgdHlwZSBvZiBwcm9ncmFtLnR5cGVzLnZhbHVlcygpKSB7
CisgICAgICAgIGlmICh0eXBlIGluc3RhbmNlb2YgQXJyYXkpIHsKKyAgICAgICAgICAgIGZvciAo
bGV0IGNvbnN0aXR1ZW50VHlwZSBvZiB0eXBlKQorICAgICAgICAgICAgICAgIGNvbnN0aXR1ZW50
VHlwZS52aXNpdChyZXNvbHZlcik7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgdHlwZS52
aXNpdChyZXNvbHZlcik7CisgICAgfQogfQogCiBmdW5jdGlvbiByZXNvbHZlVHlwZURlZnNJbkZ1
bmN0aW9ucyhwcm9ncmFtKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvUmV3cml0ZXIuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXdyaXRlci5q
cwppbmRleCBiNTZjZDYwYmY2ZmMyNjM2ZGRkNDM0MTI1MmE0NmFhMzI0ZmI0OTZkLi5hN2MxM2Zm
YzczMWQyY2QzOTc1ZTMyYTZlOWY3ZmQyY2JmM2I2OTNlIDEwMDY0NAotLS0gYS9Ub29scy9XZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXdyaXRlci5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9SZXdyaXRlci5qcwpAQCAtOTcsNyArOTcsNyBAQCBjbGFzcyBSZXdyaXRlciB7
CiAgICAgCiAgICAgdmlzaXRUeXBlUmVmKG5vZGUpCiAgICAgewotICAgICAgICBsZXQgcmVzdWx0
ID0gbmV3IFR5cGVSZWYobm9kZS5vcmlnaW4sIG5vZGUubmFtZSk7CisgICAgICAgIGxldCByZXN1
bHQgPSBuZXcgVHlwZVJlZihub2RlLm9yaWdpbiwgbm9kZS5uYW1lLCBub2RlLnR5cGVBcmd1bWVu
dHMubWFwKGFyZ3VtZW50ID0+IGFyZ3VtZW50LnZpc2l0KHRoaXMpKSk7CiAgICAgICAgIGlmIChu
b2RlLnR5cGUpCiAgICAgICAgICAgICByZXN1bHQudHlwZSA9IE5vZGUudmlzaXQobm9kZS50eXBl
LCB0aGlzKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTM4Miw3ICszODIsNyBAQCBjbGFz
cyBSZXdyaXRlciB7CiAKICAgICB2aXNpdFZlY3RvclR5cGUobm9kZSkKICAgICB7Ci0gICAgICAg
IGNvbnN0IHZlY1R5cGUgPSBuZXcgVmVjdG9yVHlwZShub2RlLm9yaWdpbiwgbm9kZS5uYW1lKTsK
KyAgICAgICAgY29uc3QgdmVjVHlwZSA9IG5ldyBWZWN0b3JUeXBlKG5vZGUub3JpZ2luLCBub2Rl
Lm5hbWUsIG5vZGUudHlwZUFyZ3VtZW50cy5tYXAoYXJndW1lbnQgPT4gYXJndW1lbnQudmlzaXQo
dGhpcykpKTsKICAgICAgICAgdmVjVHlwZS5fZWxlbWVudFR5cGUgPSBub2RlLmVsZW1lbnRUeXBl
LnZpc2l0KHRoaXMpOwogICAgICAgICByZXR1cm4gdmVjVHlwZTsKICAgICB9CmRpZmYgLS1naXQg
YS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TUElSVi5odG1sIGIvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvU1BJUlYuaHRtbAppbmRleCBjN2IzOTQwZjJiMTFiZDg5NjE0ZjE0
YTliNTJjNDdhNTYxNjZhYjE0Li5iNjBlNmZjM2U1MWRjNjQyZjA3N2U5OWI4ZTA5OTg0ZTFiOTE2
MmQzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TUElSVi5odG1s
CisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1NQSVJWLmh0bWwKQEAgLTExNiw3
ICsxMTYsNiBAQCB0ZCB7CiAgICAgPHNjcmlwdCBzcmM9IlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Np
b24uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJSZWN1cnNpb25DaGVja2VyLmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iUmVjdXJzaXZlVHlwZUNoZWNrZXIuanMiPjwvc2Ny
aXB0PgotICAgIDxzY3JpcHQgc3JjPSJSZW1vdmVUeXBlQXJndW1lbnRzLmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0iUmVzb2x2ZU5hbWVzLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0
IHNyYz0iUmVzb2x2ZU92ZXJsb2FkSW1wbC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
IlJlc29sdmVQcm9wZXJ0aWVzLmpzIj48L3NjcmlwdD4KQEAgLTE0MCw2ICsxMzksNyBAQCB0ZCB7
CiAgICAgPHNjcmlwdCBzcmM9IlR5cGVEZWYuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3Jj
PSJUeXBlRGVmUmVzb2x2ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJUeXBlUmVm
LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVHlwZU92ZXJsb2FkUmVzb2x1dGlvbkZh
aWx1cmUuanMuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJUeXBlZFZhbHVlLmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVWludExpdGVyYWwuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgc3JjPSJVaW50TGl0ZXJhbFR5cGUuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhbmRhcmRMaWJyYXJ5LmpzIGIvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhbmRhcmRMaWJyYXJ5LmpzCmluZGV4IDA2YjI1MWNm
MGEyNDgxOWNhYjUwNjVlZjU0NDVlMTQ4OWQ1ZWFhZmMuLjgxOTBhNDM1NjkyM2E2MWU1NDg1YmRk
NGYxODBkMTM4Mzc3NDg5OGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL1N0YW5kYXJkTGlicmFyeS5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9TdGFuZGFyZExpYnJhcnkuanMKQEAgLTMzLDE3ICszMyw3MCBAQCBsZXQgc3RhbmRhcmRMaWJy
YXJ5ID0gYAogbmF0aXZlIHR5cGVkZWYgdm9pZDsKIG5hdGl2ZSB0eXBlZGVmIGJvb2w7CiBuYXRp
dmUgdHlwZWRlZiB1Y2hhcjsKK25hdGl2ZSB0eXBlZGVmIHVzaG9ydDsKIG5hdGl2ZSB0eXBlZGVm
IHVpbnQ7CituYXRpdmUgdHlwZWRlZiBjaGFyOworbmF0aXZlIHR5cGVkZWYgc2hvcnQ7CiBuYXRp
dmUgdHlwZWRlZiBpbnQ7CituYXRpdmUgdHlwZWRlZiBoYWxmOwogbmF0aXZlIHR5cGVkZWYgZmxv
YXQ7Ci0KLS8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgdGhlc2UgdHlwZXMgdG8gSW50cmluc2lj
cy5qcwotLy8gbmF0aXZlIHR5cGVkZWYgdXNob3J0OwotLy8gbmF0aXZlIHR5cGVkZWYgY2hhcjsK
LS8vIG5hdGl2ZSB0eXBlZGVmIHNob3J0OwotLy8gbmF0aXZlIHR5cGVkZWYgaGFsZjsKLS8vIG5h
dGl2ZSB0eXBlZGVmIGF0b21pY19pbnQ7Ci0vLyBuYXRpdmUgdHlwZWRlZiBhdG9taWNfdWludDsK
K25hdGl2ZSB0eXBlZGVmIGF0b21pY19pbnQ7CituYXRpdmUgdHlwZWRlZiBhdG9taWNfdWludDsK
KworbmF0aXZlIHR5cGVkZWYgdmVjdG9yPGJvb2wsIDI+OwordHlwZWRlZiBib29sMiA9IHZlY3Rv
cjxib29sLCAyPjsKK25hdGl2ZSB0eXBlZGVmIHZlY3Rvcjxib29sLCAzPjsKK3R5cGVkZWYgYm9v
bDMgPSB2ZWN0b3I8Ym9vbCwgMz47CituYXRpdmUgdHlwZWRlZiB2ZWN0b3I8Ym9vbCwgND47Cit0
eXBlZGVmIGJvb2w0ID0gdmVjdG9yPGJvb2wsIDQ+OworbmF0aXZlIHR5cGVkZWYgdmVjdG9yPHVj
aGFyLCAyPjsKK3R5cGVkZWYgdWNoYXIyID0gdmVjdG9yPHVjaGFyLCAyPjsKK25hdGl2ZSB0eXBl
ZGVmIHZlY3Rvcjx1Y2hhciwgMz47Cit0eXBlZGVmIHVjaGFyMyA9IHZlY3Rvcjx1Y2hhciwgMz47
CituYXRpdmUgdHlwZWRlZiB2ZWN0b3I8dWNoYXIsIDQ+OwordHlwZWRlZiB1Y2hhcjQgPSB2ZWN0
b3I8dWNoYXIsIDQ+OworbmF0aXZlIHR5cGVkZWYgdmVjdG9yPHVzaG9ydCwgMj47Cit0eXBlZGVm
IHVzaG9ydDIgPSB2ZWN0b3I8dXNob3J0LCAyPjsKK25hdGl2ZSB0eXBlZGVmIHZlY3Rvcjx1c2hv
cnQsIDM+OwordHlwZWRlZiB1c2hvcnQzID0gdmVjdG9yPHVzaG9ydCwgMz47CituYXRpdmUgdHlw
ZWRlZiB2ZWN0b3I8dXNob3J0LCA0PjsKK3R5cGVkZWYgdXNob3J0NCA9IHZlY3Rvcjx1c2hvcnQs
IDQ+OworbmF0aXZlIHR5cGVkZWYgdmVjdG9yPHVpbnQsIDI+OwordHlwZWRlZiB1aW50MiA9IHZl
Y3Rvcjx1aW50LCAyPjsKK25hdGl2ZSB0eXBlZGVmIHZlY3Rvcjx1aW50LCAzPjsKK3R5cGVkZWYg
dWludDMgPSB2ZWN0b3I8dWludCwgMz47CituYXRpdmUgdHlwZWRlZiB2ZWN0b3I8dWludCwgND47
Cit0eXBlZGVmIHVpbnQ0ID0gdmVjdG9yPHVpbnQsIDQ+OworbmF0aXZlIHR5cGVkZWYgdmVjdG9y
PGNoYXIsIDI+OwordHlwZWRlZiBjaGFyMiA9IHZlY3RvcjxjaGFyLCAyPjsKK25hdGl2ZSB0eXBl
ZGVmIHZlY3RvcjxjaGFyLCAzPjsKK3R5cGVkZWYgY2hhcjMgPSB2ZWN0b3I8Y2hhciwgMz47Citu
YXRpdmUgdHlwZWRlZiB2ZWN0b3I8Y2hhciwgND47Cit0eXBlZGVmIGNoYXI0ID0gdmVjdG9yPGNo
YXIsIDQ+OworbmF0aXZlIHR5cGVkZWYgdmVjdG9yPHNob3J0LCAyPjsKK3R5cGVkZWYgc2hvcnQy
ID0gdmVjdG9yPHNob3J0LCAyPjsKK25hdGl2ZSB0eXBlZGVmIHZlY3RvcjxzaG9ydCwgMz47Cit0
eXBlZGVmIHNob3J0MyA9IHZlY3RvcjxzaG9ydCwgMz47CituYXRpdmUgdHlwZWRlZiB2ZWN0b3I8
c2hvcnQsIDQ+OwordHlwZWRlZiBzaG9ydDQgPSB2ZWN0b3I8c2hvcnQsIDQ+OworbmF0aXZlIHR5
cGVkZWYgdmVjdG9yPGludCwgMj47Cit0eXBlZGVmIGludDIgPSB2ZWN0b3I8aW50LCAyPjsKK25h
dGl2ZSB0eXBlZGVmIHZlY3RvcjxpbnQsIDM+OwordHlwZWRlZiBpbnQzID0gdmVjdG9yPGludCwg
Mz47CituYXRpdmUgdHlwZWRlZiB2ZWN0b3I8aW50LCA0PjsKK3R5cGVkZWYgaW50NCA9IHZlY3Rv
cjxpbnQsIDQ+OworbmF0aXZlIHR5cGVkZWYgdmVjdG9yPGhhbGYsIDI+OwordHlwZWRlZiBoYWxm
MiA9IHZlY3RvcjxoYWxmLCAyPjsKK25hdGl2ZSB0eXBlZGVmIHZlY3RvcjxoYWxmLCAzPjsKK3R5
cGVkZWYgaGFsZjMgPSB2ZWN0b3I8aGFsZiwgMz47CituYXRpdmUgdHlwZWRlZiB2ZWN0b3I8aGFs
ZiwgND47Cit0eXBlZGVmIGhhbGY0ID0gdmVjdG9yPGhhbGYsIDQ+OworbmF0aXZlIHR5cGVkZWYg
dmVjdG9yPGZsb2F0LCAyPjsKK3R5cGVkZWYgZmxvYXQyID0gdmVjdG9yPGZsb2F0LCAyPjsKK25h
dGl2ZSB0eXBlZGVmIHZlY3RvcjxmbG9hdCwgMz47Cit0eXBlZGVmIGZsb2F0MyA9IHZlY3Rvcjxm
bG9hdCwgMz47CituYXRpdmUgdHlwZWRlZiB2ZWN0b3I8ZmxvYXQsIDQ+OwordHlwZWRlZiBmbG9h
dDQgPSB2ZWN0b3I8ZmxvYXQsIDQ+OwogCiBuYXRpdmUgb3BlcmF0b3IgaW50KHVpbnQpOwogbmF0
aXZlIG9wZXJhdG9yIGludCh1Y2hhcik7CkBAIC0xNDcsMjggKzIwMCwxMiBAQCBib29sIG9wZXJh
dG9yfihib29sIHZhbHVlKQogewogICAgIHJldHVybiAhdmFsdWU7CiB9Ci0KLW5hdGl2ZSB0eXBl
ZGVmIHVjaGFyMjsKLW5hdGl2ZSB0eXBlZGVmIHVjaGFyMzsKLW5hdGl2ZSB0eXBlZGVmIHVjaGFy
NDsKLQotbmF0aXZlIHR5cGVkZWYgdWludDI7Ci1uYXRpdmUgdHlwZWRlZiB1aW50MzsKLW5hdGl2
ZSB0eXBlZGVmIHVpbnQ0OwotCi1uYXRpdmUgdHlwZWRlZiBpbnQyOwotbmF0aXZlIHR5cGVkZWYg
aW50MzsKLW5hdGl2ZSB0eXBlZGVmIGludDQ7Ci0KLW5hdGl2ZSB0eXBlZGVmIGZsb2F0MjsKLW5h
dGl2ZSB0eXBlZGVmIGZsb2F0MzsKLW5hdGl2ZSB0eXBlZGVmIGZsb2F0NDsKIGA7CiAKIC8vIEZJ
WE1FOiBPbmNlIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGhhcyBiZWVuIHJlcGxhY2VkIHdpdGggYSBu
ZXcgdmVyc2lvbiwgdGhpcyBjb21tZW50cyBzaG91bGQgYmUgcmVtb3ZlZC4KIC8vIFRoaXMgbGlz
dCBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhdmFpbGFiaWxpdHkgb2YgdmVjdG9yIHR5cGVzIGF2
YWlsYWJsZSBpbiB0aGUgbGFuZ2F1Z2UuCiAvLyBQZXJtaXNzaWJsZSB2ZWN0b3IgZWxlbWVudCB0
eXBlcyBtdXN0IGFwcGVhciBpbiB0aGlzIGxpc3QgYW5kIGluIHRoZSBzdGFuZGFyZCBsaWJyYXJ5
Ci1jb25zdCBWZWN0b3JFbGVtZW50VHlwZXMgPSBbIC8qImJvb2wiLCovICJ1Y2hhciIsIC8qImNo
YXIiLCAidXNob3J0IiwgInNob3J0IiwqLyAidWludCIsICJpbnQiLCAvKiAiaGFsZiIsICovImZs
b2F0IiBdOworY29uc3QgVmVjdG9yRWxlbWVudFR5cGVzID0gWyAiYm9vbCIsICJ1Y2hhciIsICJj
aGFyIiwgInVzaG9ydCIsICJzaG9ydCIsICJ1aW50IiwgImludCIsICJoYWxmIiwgImZsb2F0IiBd
OwogY29uc3QgVmVjdG9yRWxlbWVudFNpemVzID0gWyAyLCAzLCA0IF07CiAKIGZ1bmN0aW9uIGFs
bFZlY3RvclR5cGVOYW1lcygpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9TdGF0ZW1lbnRDbG9uZXIuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9T
dGF0ZW1lbnRDbG9uZXIuanMKaW5kZXggYjM5NDhjNDUwYzcxNjA5Nzc5NzVlZDRlOGU5OGVkOTlj
NGY3YTA1OS4uMGQwNzE1YTk4NTRkZWYxYmZkMmE4MDhjNzQwNDExMmJhMWE0YTBjMSAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhdGVtZW50Q2xvbmVyLmpzCisr
KyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0YXRlbWVudENsb25lci5qcwpAQCAt
NTAsNyArNTAsNyBAQCBjbGFzcyBTdGF0ZW1lbnRDbG9uZXIgZXh0ZW5kcyBSZXdyaXRlciB7CiAg
ICAgCiAgICAgdmlzaXROYXRpdmVUeXBlKG5vZGUpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3
IE5hdGl2ZVR5cGUobm9kZS5vcmlnaW4sIG5vZGUubmFtZSk7CisgICAgICAgIHJldHVybiBuZXcg
TmF0aXZlVHlwZShub2RlLm9yaWdpbiwgbm9kZS5uYW1lLCBub2RlLnR5cGVBcmd1bWVudHMubWFw
KGFyZ3VtZW50ID0+IGFyZ3VtZW50LnZpc2l0KHRoaXMpKSk7CiAgICAgfQogICAgIAogICAgIHZp
c2l0VHlwZURlZihub2RlKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvVGVzdC5odG1sIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5odG1sCmlu
ZGV4IDEzZjM1ODIzOTkyOWQ4YTNlNmFjZTUyNTQ1YjkxY2E1MmQ2MDYwZTQuLmMzNGQ0NGIxZTJh
OTQzZmJlNTY0ZmFjNDEzZjg1M2E4M2IxNmNhODkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL1Rlc3QuaHRtbAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9UZXN0Lmh0bWwKQEAgLTExMCw3ICsxMTAsNiBAQAogPHNjcmlwdCBzcmM9IlJlYWRNb2Rp
ZnlXcml0ZUV4cHJlc3Npb24uanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlJlY3Vyc2lvbkNo
ZWNrZXIuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlJlY3Vyc2l2ZVR5cGVDaGVja2VyLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJSZW1vdmVUeXBlQXJndW1lbnRzLmpzIj48L3Njcmlw
dD4KIDxzY3JpcHQgc3JjPSJSZXNvbHZlTmFtZXMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9
IlJlc29sdmVPdmVybG9hZEltcGwuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlJlc29sdmVQ
cm9wZXJ0aWVzLmpzIj48L3NjcmlwdD4KQEAgLTEzNCw2ICsxMzMsNyBAQAogPHNjcmlwdCBzcmM9
IlR5cGVEZWYuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlR5cGVEZWZSZXNvbHZlci5qcyI+
PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iVHlwZVJlZi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iVHlwZU92ZXJsb2FkUmVzb2x1dGlvbkZhaWx1cmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBz
cmM9IlR5cGVkVmFsdWUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlVpbnRMaXRlcmFsLmpz
Ij48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJVaW50TGl0ZXJhbFR5cGUuanMiPjwvc2NyaXB0Pgpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVHlwZU92ZXJsb2FkUmVz
b2x1dGlvbkZhaWx1cmUuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UeXBlT3Zl
cmxvYWRSZXNvbHV0aW9uRmFpbHVyZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNWNiM2Y3MTBmYTBjZTAzZDI5
MDJmYTMyZWQ4YjAyNzVmYjYyNjA4Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvVHlwZU92ZXJsb2FkUmVzb2x1dGlvbkZhaWx1cmUuanMKQEAgLTAsMCAr
MSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworInVz
ZSBzdHJpY3QiOworCitjbGFzcyBUeXBlT3ZlcmxvYWRSZXNvbHV0aW9uRmFpbHVyZSB7CisgICAg
Y29uc3RydWN0b3IodHlwZSwgcmVhc29uKQorICAgIHsKKyAgICAgICAgdGhpcy5fdHlwZSA9IHR5
cGU7CisgICAgICAgIHRoaXMuX3JlYXNvbiA9IHJlYXNvbjsKKyAgICB9CisgICAgCisgICAgZ2V0
IHR5cGUoKSB7IHJldHVybiB0aGlzLl90eXBlOyB9CisgICAgZ2V0IHJlYXNvbigpIHsgcmV0dXJu
IHRoaXMuX3JlYXNvbjsgfQorICAgIAorICAgIHRvU3RyaW5nKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiB0aGlzLnR5cGUudG9TdHJpbmcoKSArICIgZGlkIG5vdCBtYXRjaCBiZWNhdXNlOiAiICsg
dGhpcy5yZWFzb247CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9UeXBlUmVmLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVHlw
ZVJlZi5qcwppbmRleCBiNWYzYzBiM2Q5MjUzMmUwNWM2ODAwNTRhMTYxZjA1ZTBkZGQ2NDZiLi42
MGM1ODk2ZjlmNjRhMmM5ZjIzNGViNTY1YjBmNDk1MWY3N2E1NjQyIDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UeXBlUmVmLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL1R5cGVSZWYuanMKQEAgLTI1LDcgKzI1LDcgQEAKICJ1c2Ugc3RyaWN0
IjsKIAogY2xhc3MgVHlwZVJlZiBleHRlbmRzIFR5cGUgewotICAgIGNvbnN0cnVjdG9yKG9yaWdp
biwgbmFtZSwgdHlwZUFyZ3VtZW50cyA9IG51bGwpCisgICAgY29uc3RydWN0b3Iob3JpZ2luLCBu
YW1lLCB0eXBlQXJndW1lbnRzID0gW10pCiAgICAgewogICAgICAgICBzdXBlcigpOwogICAgICAg
ICB0aGlzLl9vcmlnaW4gPSBvcmlnaW47CkBAIC02NCw2ICs2NCw0MCBAQCBjbGFzcyBUeXBlUmVm
IGV4dGVuZHMgVHlwZSB7CiAgICAgICAgIHRoaXMuX3R5cGUgPSBuZXdUeXBlOwogICAgIH0KIAor
ICAgIHJlc29sdmUocG9zc2libGVPdmVybG9hZHMsIHByb2dyYW0pCisgICAgeworICAgICAgICBp
ZiAoIXBvc3NpYmxlT3ZlcmxvYWRzKQorICAgICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3Io
dGhpcy5vcmlnaW4ub3JpZ2luU3RyaW5nLCAiRGlkIG5vdCBmaW5kIGFueSB0eXBlcyBuYW1lZCAi
ICsgdGhpcy5uYW1lKTsKKworICAgICAgICBsZXQgZmFpbHVyZXMgPSBbXTsKKyAgICAgICAgbGV0
IG92ZXJsb2FkID0gcmVzb2x2ZVR5cGVPdmVybG9hZEltcGwocG9zc2libGVPdmVybG9hZHMsIHRo
aXMudHlwZUFyZ3VtZW50cyk7CisKKyAgICAgICAgaWYgKCFvdmVybG9hZC50eXBlKSB7CisgICAg
ICAgICAgICBmYWlsdXJlcy5wdXNoKC4uLm92ZXJsb2FkLmZhaWx1cmVzKTsKKyAgICAgICAgICAg
IGxldCBtZXNzYWdlID0gIkRpZCBub3QgZmluZCB0eXBlIG5hbWVkICIgKyB0aGlzLm5hbWUgKyAi
IGZvciB0eXBlIGFyZ3VtZW50cyAiOworICAgICAgICAgICAgbWVzc2FnZSArPSAiKCIgKyB0aGlz
LnR5cGVBcmd1bWVudHMgKyAiKSI7CisgICAgICAgICAgICBpZiAoZmFpbHVyZXMubGVuZ3RoKQor
ICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gIiwgYnV0IGNvbnNpZGVyZWQ6XG4iICsgZmFpbHVy
ZXMuam9pbigiXG4iKQorICAgICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3IodGhpcy5vcmln
aW4ub3JpZ2luU3RyaW5nLCBtZXNzYWdlKTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgdGhpcy50eXBlQXJndW1lbnRzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAg
ICBsZXQgdHlwZUFyZ3VtZW50ID0gdGhpcy50eXBlQXJndW1lbnRzW2ldOworICAgICAgICAgICAg
bGV0IHJlc29sdmVkVHlwZUFyZ3VtZW50ID0gb3ZlcmxvYWQudHlwZS50eXBlQXJndW1lbnRzW2ld
OworICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHR5cGVBcmd1bWVudC5lcXVhbHNXaXRoQ29tbWl0
KHJlc29sdmVkVHlwZUFyZ3VtZW50KTsKKyAgICAgICAgICAgIGlmICghcmVzdWx0KQorICAgICAg
ICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQXQgIiArIHRoaXMub3JpZ2luLm9yaWdpblN0cmlu
ZyArICIgYXJndW1lbnQgdHlwZXMgZm9yIFR5cGUgYW5kIFR5cGVSZWYgbm90IGVxdWFsOiBhcmd1
bWVudCB0eXBlID0gIiArIHR5cGVBcmd1bWVudCArICIsIHJlc29sdmVkIHR5cGUgYXJndW1lbnQg
PSAiICsgcmVzb2x2ZWRUeXBlQXJndW1lbnQpOworICAgICAgICAgICAgaWYgKHJlc29sdmVkVHlw
ZUFyZ3VtZW50LmNvbnN0cnVjdG9yLm5hbWUgPT0gIkdlbmVyaWNMaXRlcmFsIikgeworICAgICAg
ICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIHByb2JhYmx5IHdyb25nLgorICAgICAgICAgICAg
ICAgIHJlc3VsdCA9IHR5cGVBcmd1bWVudC50eXBlLmVxdWFsc1dpdGhDb21taXQocmVzb2x2ZWRU
eXBlQXJndW1lbnQudHlwZSk7CisgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpCisgICAgICAg
ICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQXQgIiArIHRoaXMub3JpZ2luLm9yaWdpblN0
cmluZyArICIgYXJndW1lbnQgdHlwZXMgZm9yIFR5cGUgYW5kIFR5cGVSZWYgbm90IGVxdWFsOiBh
cmd1bWVudCB0eXBlID0gIiArIHR5cGVBcmd1bWVudCArICIsIHJlc29sdmVkIHR5cGUgYXJndW1l
bnQgPSAiICsgcmVzb2x2ZWRUeXBlQXJndW1lbnQpOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIAorICAgICAgICB9CisgICAgICAgIHRoaXMudHlwZSA9IG92ZXJsb2FkLnR5cGU7Cisg
ICAgfQorCiAgICAgZ2V0IHVuaWZ5Tm9kZSgpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMudHlw
ZSkKQEAgLTk5LDcgKzEzMywxMCBAQCBjbGFzcyBUeXBlUmVmIGV4dGVuZHMgVHlwZSB7CiAgICAg
ewogICAgICAgICBpZiAoIXRoaXMubmFtZSkKICAgICAgICAgICAgIHJldHVybiB0aGlzLnR5cGUu
dG9TdHJpbmcoKTsKLSAgICAgICAgcmV0dXJuIHRoaXMubmFtZTsKKyAgICAgICAgbGV0IHJlc3Vs
dCA9IHRoaXMubmFtZTsKKyAgICAgICAgaWYgKHRoaXMudHlwZUFyZ3VtZW50cy5sZW5ndGggPiAw
KQorICAgICAgICAgICAgcmVzdWx0ICs9ICI8IiArIHRoaXMudHlwZUFyZ3VtZW50cy5tYXAoYXJn
dW1lbnQgPT4gYXJndW1lbnQudG9TdHJpbmcoKSkuam9pbigiLCIpICsgIj4iOworICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvVW5pZmljYXRpb25Db250ZXh0LmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvVW5pZmljYXRpb25Db250ZXh0LmpzCmluZGV4IDJmNzE1NDdiMGFmYmUxODAzNzhm
Mzc5OTYyMzE4NjJhMmI5MWE4MmUuLjM4MTkxNjk3MjIzZWY3MjFhNTM3OTE0YjM2OTg5NzY3ODFm
ZTZlNmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1VuaWZpY2F0
aW9uQ29udGV4dC5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9VbmlmaWNh
dGlvbkNvbnRleHQuanMKQEAgLTkyLDYgKzkyLDE5IEBAIGNsYXNzIFVuaWZpY2F0aW9uQ29udGV4
dCB7CiAgICAgCiAgICAgdmVyaWZ5KCkKICAgICB7CisgICAgICAgIC8vIFdlIGRvIGEgdHdvLXBo
YXNlIHByZS12ZXJpZmljYXRpb24uIFRoaXMgZ2l2ZXMgbGl0ZXJhbHMgYSBjaGFuY2UgdG8gc2Vs
ZWN0IGEgbW9yZSBzcGVjaWZpYyB0eXBlLgorICAgICAgICBsZXQgcHJlcGFyYXRpb25zID0gW107
CisgICAgICAgIGZvciAobGV0IG5vZGUgb2YgdGhpcy5ub2RlcykgeworICAgICAgICAgICAgbGV0
IHByZXBhcmF0aW9uID0gbm9kZS5wcmVwYXJlVG9WZXJpZnkodGhpcyk7CisgICAgICAgICAgICBp
ZiAocHJlcGFyYXRpb24pCisgICAgICAgICAgICAgICAgcHJlcGFyYXRpb25zLnB1c2gocHJlcGFy
YXRpb24pOworICAgICAgICB9CisgICAgICAgIGZvciAobGV0IHByZXBhcmF0aW9uIG9mIHByZXBh
cmF0aW9ucykgeworICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHByZXBhcmF0aW9uKCk7CisgICAg
ICAgICAgICBpZiAoIXJlc3VsdC5yZXN1bHQpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICAgICAgfQorCiAgICAgICAgIGZvciAobGV0IHR5cGVBcmd1bWVudCBvZiB0aGlzLnR5
cGVBcmd1bWVudHMoKSkgewogICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHR5cGVBcmd1bWVudC52
ZXJpZnlBc0FyZ3VtZW50KHRoaXMpOwogICAgICAgICAgICAgaWYgKCFyZXN1bHQucmVzdWx0KQpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVmVjdG9yVHlwZS5qcyBi
L1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1ZlY3RvclR5cGUuanMKaW5kZXggNTAxNGM2
NzFhMDc4ODIwMDJjMjM0YmIzMmYxN2M4ODYwZWZmYzFjNi4uZDM1MTI3OTE0NGFhYTVkZDkyZTAx
NDlhMWEzOGVkM2ZkNDYyY2FkNSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvVmVjdG9yVHlwZS5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9W
ZWN0b3JUeXBlLmpzCkBAIC0yNSwxOSArMjUsMTMgQEAKICJ1c2Ugc3RyaWN0IjsKIAogY2xhc3Mg
VmVjdG9yVHlwZSBleHRlbmRzIE5hdGl2ZVR5cGUgewotICAgIGNvbnN0cnVjdG9yKG9yaWdpbiwg
bmFtZSkKKyAgICBjb25zdHJ1Y3RvcihvcmlnaW4sIG5hbWUsIHR5cGVBcmd1bWVudHMpCiAgICAg
ewotICAgICAgICBzdXBlcihvcmlnaW4sIG5hbWUpOwotICAgICAgICBjb25zdCBtYXRjaCA9IC9e
KFtBLXpdKykoWzAtOV0pJC8uZXhlYyhuYW1lKTsKLSAgICAgICAgaWYgKCFtYXRjaCkKLSAgICAg
ICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9yKG9yaWdpbi5vcmlnaW5TdHJpbmcsIGAke25hbWV9
IGRvZXNuJ3QgbWF0Y2ggdGhlIGZvcm1hdCBmb3IgdmVjdG9yIHR5cGUgbmFtZXMuJ2ApOwotCi0g
ICAgICAgIHRoaXMuX2VsZW1lbnRUeXBlID0gbmV3IFR5cGVSZWYob3JpZ2luLCBtYXRjaFsxXSk7
Ci0gICAgICAgIHRoaXMuX251bUVsZW1lbnRzVmFsdWUgPSBwYXJzZUludChtYXRjaFsyXSk7Cisg
ICAgICAgIHN1cGVyKG9yaWdpbiwgbmFtZSwgdHlwZUFyZ3VtZW50cyk7CiAgICAgfQogCi0gICAg
Z2V0IGVsZW1lbnRUeXBlKCkgeyByZXR1cm4gdGhpcy5fZWxlbWVudFR5cGU7IH0KLSAgICBnZXQg
bnVtRWxlbWVudHNWYWx1ZSgpIHsgcmV0dXJuIHRoaXMuX251bUVsZW1lbnRzVmFsdWU7IH0KKyAg
ICBnZXQgZWxlbWVudFR5cGUoKSB7IHJldHVybiB0aGlzLnR5cGVBcmd1bWVudHNbMF07IH0KKyAg
ICBnZXQgbnVtRWxlbWVudHNWYWx1ZSgpIHsgcmV0dXJuIHRoaXMudHlwZUFyZ3VtZW50c1sxXS52
YWx1ZTsgfQogICAgIGdldCBzaXplKCkgeyByZXR1cm4gdGhpcy5lbGVtZW50VHlwZS5zaXplICog
dGhpcy5udW1FbGVtZW50c1ZhbHVlOyB9CiAKICAgICB1bmlmeUltcGwodW5pZmljYXRpb25Db250
ZXh0LCBvdGhlcikKQEAgLTU5LDcgKzUzLDcgQEAgY2xhc3MgVmVjdG9yVHlwZSBleHRlbmRzIE5h
dGl2ZVR5cGUgewogCiAgICAgdG9TdHJpbmcoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGBuYXRp
dmUgdHlwZWRlZiAke3RoaXMuZWxlbWVudFR5cGV9JHt0aGlzLm51bUVsZW1lbnRzVmFsdWV9YDsK
KyAgICAgICAgcmV0dXJuIGBuYXRpdmUgdHlwZWRlZiB2ZWN0b3I8JHt0aGlzLmVsZW1lbnRUeXBl
fSwgJHt0aGlzLm51bUVsZW1lbnRzVmFsdWV9PmA7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9WaXNpdG9yLmpzIGIvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvVmlzaXRvci5qcwppbmRleCA3ZDM4N2IyNWYyNTg5Yjg3MzkxOGFmMmY0
NGMyNDM0YWQ2NTg3NDdmLi5mZTk0MGNjYzUxMmUwNzBhNGNiNTBjNjI2NDgwZGZiOGIxMjgxYjE4
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9WaXNpdG9yLmpzCisr
KyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Zpc2l0b3IuanMKQEAgLTY4LDEwICs2
OCwxNCBAQCBjbGFzcyBWaXNpdG9yIHsKICAgICAKICAgICB2aXNpdFR5cGVSZWYobm9kZSkKICAg
ICB7CisgICAgICAgIGZvciAobGV0IHR5cGVBcmd1bWVudCBvZiBub2RlLnR5cGVBcmd1bWVudHMp
CisgICAgICAgICAgICB0eXBlQXJndW1lbnQudmlzaXQodGhpcyk7CiAgICAgfQogICAgIAogICAg
IHZpc2l0TmF0aXZlVHlwZShub2RlKQogICAgIHsKKyAgICAgICAgZm9yIChsZXQgdHlwZUFyZ3Vt
ZW50IG9mIG5vZGUudHlwZUFyZ3VtZW50cykKKyAgICAgICAgICAgIHR5cGVBcmd1bWVudC52aXNp
dCh0aGlzKTsKICAgICB9CiAgICAgCiAgICAgdmlzaXRUeXBlRGVmKG5vZGUpCmRpZmYgLS1naXQg
YS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9pbmRleC5odG1sIGIvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvaW5kZXguaHRtbAppbmRleCA0YzkzYTMzZTZhMzg2NjJlOGJhMWU4
NDI0MDNkNGMwMmQ1ZTlmOWRmLi44YTNkMTA4NWEzYTI5NzViZDRlNjZkMDVkMGVjZGQ2MWVhNmRh
YTQzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9pbmRleC5odG1s
CisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL2luZGV4Lmh0bWwKQEAgLTExMCw3
ICsxMTAsNiBAQAogPHNjcmlwdCBzcmM9IlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uanMiPjwv
c2NyaXB0PgogPHNjcmlwdCBzcmM9IlJlY3Vyc2lvbkNoZWNrZXIuanMiPjwvc2NyaXB0PgogPHNj
cmlwdCBzcmM9IlJlY3Vyc2l2ZVR5cGVDaGVja2VyLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSJSZW1vdmVUeXBlQXJndW1lbnRzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJSZXNvbHZl
TmFtZXMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlJlc29sdmVPdmVybG9hZEltcGwuanMi
Pjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlJlc29sdmVQcm9wZXJ0aWVzLmpzIj48L3NjcmlwdD4K
QEAgLTEzNCw2ICsxMzMsNyBAQAogPHNjcmlwdCBzcmM9IlR5cGVEZWYuanMiPjwvc2NyaXB0Pgog
PHNjcmlwdCBzcmM9IlR5cGVEZWZSZXNvbHZlci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0i
VHlwZVJlZi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iVHlwZU92ZXJsb2FkUmVzb2x1dGlv
bkZhaWx1cmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlR5cGVkVmFsdWUuanMiPjwvc2Ny
aXB0PgogPHNjcmlwdCBzcmM9IlVpbnRMaXRlcmFsLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3Jj
PSJVaW50TGl0ZXJhbFR5cGUuanMiPjwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347754</attachid>
            <date>2018-08-21 19:26:12 -0700</date>
            <delta_ts>2018-08-21 19:39:18 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-188773-20180821192606.patch</filename>
            <type>text/plain</type>
            <size>77032</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1MTQzCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNTdkYThiZjhkNzFmNmJkNGZiNjNkZGE5YzU1ZWI2NGI5
OTZkYWI5NC4uODNmM2ZjOTc4N2U1MmNkZTEzMzI3Nzg1OTRiOWJhZjg3MTc2MDI3MiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMx
IEBACisyMDE4LTA4LTIxICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CisKKyAgICAgICAgW1dITFNMXSBBbGxvdyBuYXRpdmUgdHlwZXMgdG8gaGF2ZSB0eXBlIGFyZ3Vt
ZW50cyAobGlrZSAidmVjdG9yPGZsb2F0LCA0PiIpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODg3NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0ludHJpbnNp
Y3MuanM6CisgICAgICAgIChJbnRyaW5zaWNzLmNhc3QpOgorICAgICAgICAoSW50cmluc2ljcy5i
aXR3aXNlQ2FzdCk6CisgICAgICAgIChJbnRyaW5zaWNzLmNhc3RUb0hhbGYpOgorICAgICAgICAo
SW50cmluc2ljcy4pOgorICAgICAgICAoSW50cmluc2ljcyk6CisgICAgICAgICogV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvTmF0aXZlVHlwZS5qczoKKyAgICAgICAgKE5hdGl2ZVR5cGUpOgorICAg
ICAgICAoTmF0aXZlVHlwZS5wcm90b3R5cGUuZ2V0IHR5cGVBcmd1bWVudHMpOgorICAgICAgICAo
TmF0aXZlVHlwZS5wcm90b3R5cGUudG9TdHJpbmcpOgorICAgICAgICAoTmF0aXZlVHlwZS5jcmVh
dGUpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1BhcnNlLmpzOgorICAgICAg
ICAoaXNDYWxsRXhwcmVzc2lvbik6CisgICAgICAgIChwYXJzZU5hdGl2ZSk6CisgICAgICAgICog
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhbmRhcmRMaWJyYXJ5LmpzOgorICAgICAgICAoYm9v
bC5vcGVyYXRvcik6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVmVjdG9yVHlw
ZS5qczoKKyAgICAgICAgKFZlY3RvclR5cGUpOgorICAgICAgICAoVmVjdG9yVHlwZS5wcm90b3R5
cGUuZ2V0IGVsZW1lbnRUeXBlKToKKyAgICAgICAgKFZlY3RvclR5cGUucHJvdG90eXBlLmdldCBu
dW1FbGVtZW50c1ZhbHVlKToKKwogMjAxOC0wOC0yMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFRyYW5zbGF0ZSBXZWJLaXQuTGltaXRUaXRs
ZVNpemUgQVBJIHRlc3QgaW50byBPYmpDCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9BbGwuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9BbGwuanMK
aW5kZXggODE1MjUyNzNhZTY1YTE0ODY1OTY0YTEzZGE0NWNlOTRlZjEwNjg0YS4uZjlhMWQ5OWVh
ZGM4N2I0YTQwOGNmZjllNDk5MGE3MzdlY2I4YmExZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvQWxsLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL0FsbC5qcwpAQCAtNjAsNiArNjAsNyBAQCBsb2FkKCJDaGVja0xvb3BzLmpzIik7CiBsb2Fk
KCJDaGVja1JlY3Vyc2lvbi5qcyIpOwogbG9hZCgiQ2hlY2tSZWN1cnNpdmVUeXBlcy5qcyIpOwog
bG9hZCgiQ2hlY2tSZXR1cm5zLmpzIik7Citsb2FkKCJDaGVja1R5cGVzV2l0aEFyZ3VtZW50cy5q
cyIpOwogbG9hZCgiQ2hlY2tVbnJlYWNoYWJsZUNvZGUuanMiKTsKIGxvYWQoIkNoZWNrV3JhcHBl
ZC5qcyIpOwogbG9hZCgiQ2hlY2tlci5qcyIpOwpAQCAtMTMzLDcgKzEzNCw2IEBAIGxvYWQoIlB0
clR5cGUuanMiKTsKIGxvYWQoIlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uanMiKTsKIGxvYWQo
IlJlY3Vyc2lvbkNoZWNrZXIuanMiKTsKIGxvYWQoIlJlY3Vyc2l2ZVR5cGVDaGVja2VyLmpzIik7
Ci1sb2FkKCJSZW1vdmVUeXBlQXJndW1lbnRzLmpzIik7CiBsb2FkKCJSZXNvbHZlTmFtZXMuanMi
KTsKIGxvYWQoIlJlc29sdmVPdmVybG9hZEltcGwuanMiKTsKIGxvYWQoIlJlc29sdmVQcm9wZXJ0
aWVzLmpzIik7CkBAIC0xNTcsNiArMTU3LDcgQEAgbG9hZCgiVHJhcFN0YXRlbWVudC5qcyIpOwog
bG9hZCgiVHlwZURlZi5qcyIpOwogbG9hZCgiVHlwZURlZlJlc29sdmVyLmpzIik7CiBsb2FkKCJU
eXBlUmVmLmpzIik7Citsb2FkKCJUeXBlT3ZlcmxvYWRSZXNvbHV0aW9uRmFpbHVyZS5qcyIpOwog
bG9hZCgiVHlwZWRWYWx1ZS5qcyIpOwogbG9hZCgiVWludExpdGVyYWwuanMiKTsKIGxvYWQoIlVp
bnRMaXRlcmFsVHlwZS5qcyIpOwpAQCAtMTcwLDQgKzE3MSw0IEBAIGxvYWQoIldTeW50YXhFcnJv
ci5qcyIpOwogbG9hZCgiV1RyYXBFcnJvci5qcyIpOwogbG9hZCgiV1R5cGVFcnJvci5qcyIpOwog
bG9hZCgiV2hpbGVMb29wLmpzIik7Ci1sb2FkKCJXcmFwQ2hlY2tlci5qcyIpOwpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKK2xvYWQoIldyYXBDaGVja2VyLmpzIik7CmRpZmYgLS1naXQgYS9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DYWxsRXhwcmVzc2lvbi5qcyBiL1Rvb2xzL1dl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NhbGxFeHByZXNzaW9uLmpzCmluZGV4IDZkYmExNTMyOTQ2
Y2RhNzhkNzk1NWM1NjRiYWNjY2I2ODIzMDc2MmMuLjg1NDllNjVmNWNiYTUyOWQ1YThlODgzNGY0
MGM5NTAzMzc5NzFiNjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L0NhbGxFeHByZXNzaW9uLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Nh
bGxFeHByZXNzaW9uLmpzCkBAIC02Niw3ICs2Niw2IEBAIGNsYXNzIENhbGxFeHByZXNzaW9uIGV4
dGVuZHMgRXhwcmVzc2lvbiB7CiAgICAgICAgICAgICAgICAgb3ZlcmxvYWQuZnVuYyA9IGZ1bmM7
CiAgICAgICAgIH0KIAotCiAgICAgICAgIGlmICghb3ZlcmxvYWQuZnVuYykgewogICAgICAgICAg
ICAgZmFpbHVyZXMucHVzaCguLi5vdmVybG9hZC5mYWlsdXJlcyk7CiAgICAgICAgICAgICBsZXQg
bWVzc2FnZSA9ICJEaWQgbm90IGZpbmQgZnVuY3Rpb24gbmFtZWQgIiArIHRoaXMubmFtZSArICIg
Zm9yIGNhbGwgd2l0aCAiOwpAQCAtMTE3LDYgKzExNiw4IEBAIGNsYXNzIENhbGxFeHByZXNzaW9u
IGV4dGVuZHMgRXhwcmVzc2lvbiB7CiAKICAgICAgICAgY29uc3QgZWxlbWVudFR5cGUgPSB0aGlz
LmFyZ3VtZW50VHlwZXNbMF0uZWxlbWVudFR5cGU7CiAgICAgICAgIHRoaXMucmVzdWx0VHlwZSA9
IHRoaXMuX3JldHVyblR5cGUgPSBUeXBlUmVmLndyYXAobmV3IFB0clR5cGUodGhpcy5vcmlnaW4s
IGFkZHJlc3NTcGFjZSwgVHlwZVJlZi53cmFwKGVsZW1lbnRUeXBlKSkpCisgICAgICAgIGlmICh0
aGlzLnJldHVyblR5cGUubmFtZSA9PSAidmVjdG9yIiAmJiB0aGlzLnJldHVyblR5cGUudHlwZUFy
Z3VtZW50cy5sZW5ndGggPT0gMCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiYXNkZiIp
OwogCiAgICAgICAgIGxldCBhcnJheVJlZkFjY2Vzc29yID0gbmV3IE9wZXJhdG9yQW5kZXJJbmRl
eGVyKHRoaXMucmV0dXJuVHlwZS50b1N0cmluZygpLCBhZGRyZXNzU3BhY2UpOwogICAgICAgICBj
b25zdCBmdW5jID0gbmV3IE5hdGl2ZUZ1bmModGhpcy5vcmlnaW4sICJvcGVyYXRvciZbXSIsIHRo
aXMucmVzdWx0VHlwZSwgWwpAQCAtMTMyLDYgKzEzMyw4IEBAIGNsYXNzIENhbGxFeHByZXNzaW9u
IGV4dGVuZHMgRXhwcmVzc2lvbiB7CiAgICAgX3Jlc29sdmVXaXRoT3BlcmF0b3JMZW5ndGgocHJv
Z3JhbSkKICAgICB7CiAgICAgICAgIHRoaXMucmVzdWx0VHlwZSA9IHRoaXMuX3JldHVyblR5cGUg
PSBUeXBlUmVmLndyYXAocHJvZ3JhbS50eXBlcy5nZXQoInVpbnQiKSk7CisgICAgICAgIGlmICh0
aGlzLnJldHVyblR5cGUubmFtZSA9PSAidmVjdG9yIiAmJiB0aGlzLnJldHVyblR5cGUudHlwZUFy
Z3VtZW50cy5sZW5ndGggPT0gMCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiYXNkZiIp
OwogCiAgICAgICAgIGlmICh0aGlzLmFyZ3VtZW50VHlwZXNbMF0uaXNBcnJheSkgewogICAgICAg
ICAgICAgY29uc3QgYXJyYXlUeXBlID0gdGhpcy5hcmd1bWVudFR5cGVzWzBdOwpAQCAtMTY2LDcg
KzE2OSw5IEBAIGNsYXNzIENhbGxFeHByZXNzaW9uIGV4dGVuZHMgRXhwcmVzc2lvbiB7CiAgICAg
CiAgICAgYmVjb21lQ2FzdChyZXR1cm5UeXBlKQogICAgIHsKLSAgICAgICAgdGhpcy5fcmV0dXJu
VHlwZSA9IG5ldyBUeXBlUmVmKHRoaXMub3JpZ2luLCB0aGlzLm5hbWUpOworICAgICAgICB0aGlz
Ll9yZXR1cm5UeXBlID0gbmV3IFR5cGVSZWYodGhpcy5vcmlnaW4sIHRoaXMubmFtZSwgcmV0dXJu
VHlwZS50eXBlQXJndW1lbnRzKTsKKyAgICAgICAgaWYgKHRoaXMucmV0dXJuVHlwZS5uYW1lID09
ICJ2ZWN0b3IiICYmIHRoaXMucmV0dXJuVHlwZS50eXBlQXJndW1lbnRzLmxlbmd0aCA9PSAwKQor
ICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJhc2RmIik7CiAgICAgICAgIHRoaXMuX3JldHVy
blR5cGUudHlwZSA9IHJldHVyblR5cGU7CiAgICAgICAgIHRoaXMuX25hbWUgPSAib3BlcmF0b3Ig
Y2FzdCI7CiAgICAgICAgIHRoaXMuX2lzQ2FzdCA9IHRydWU7CkBAIC0xNzUsNiArMTgwLDggQEAg
Y2xhc3MgQ2FsbEV4cHJlc3Npb24gZXh0ZW5kcyBFeHByZXNzaW9uIHsKICAgICBzZXRDYXN0RGF0
YShyZXR1cm5UeXBlKQogICAgIHsKICAgICAgICAgdGhpcy5fcmV0dXJuVHlwZSA9IHJldHVyblR5
cGU7CisgICAgICAgIGlmICh0aGlzLnJldHVyblR5cGUubmFtZSA9PSAidmVjdG9yIiAmJiB0aGlz
LnJldHVyblR5cGUudHlwZUFyZ3VtZW50cy5sZW5ndGggPT0gMCkKKyAgICAgICAgICAgIHRocm93
IG5ldyBFcnJvcigiYXNkZiIpOwogICAgICAgICB0aGlzLl9pc0Nhc3QgPSB0cnVlOwogICAgIH0K
ICAgICAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NoZWNrZXIu
anMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DaGVja2VyLmpzCmluZGV4IDFhMTRj
ODY2YWNlZDQxMTJiMTgwZjY5MTU2YzA2ZDJiNjY0ZDg3ZTIuLmJiMDA4NzQxNGIwMTVlMzA0NjFh
OGMxZWIzOWY5OGYxNDJhMDMzZWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL0NoZWNrZXIuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2hl
Y2tlci5qcwpAQCAtNDEsOCArNDEsMTMgQEAgY2xhc3MgQ2hlY2tlciBleHRlbmRzIFZpc2l0b3Ig
ewogICAgICAgICAgICAgc3RhdGVtZW50LnZpc2l0KHRoaXMpOwogICAgICAgICB9CiAgICAgICAg
IAotICAgICAgICBmb3IgKGxldCB0eXBlIG9mIG5vZGUudHlwZXMudmFsdWVzKCkpCi0gICAgICAg
ICAgICBkb1N0YXRlbWVudCh0eXBlKTsKKyAgICAgICAgZm9yIChsZXQgdHlwZSBvZiBub2RlLnR5
cGVzLnZhbHVlcygpKSB7CisgICAgICAgICAgICBpZiAodHlwZSBpbnN0YW5jZW9mIEFycmF5KSB7
CisgICAgICAgICAgICAgICAgZm9yIChsZXQgY29uc3RpdHVlbnRUeXBlIG9mIHR5cGUpCisgICAg
ICAgICAgICAgICAgICAgIGRvU3RhdGVtZW50KGNvbnN0aXR1ZW50VHlwZSk7CisgICAgICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgICAgICBkb1N0YXRlbWVudCh0eXBlKTsKKyAgICAgICAgfQog
ICAgICAgICBmb3IgKGxldCBmdW5jcyBvZiBub2RlLmZ1bmN0aW9ucy52YWx1ZXMoKSkgewogICAg
ICAgICAgICAgZm9yIChsZXQgZnVuYyBvZiBmdW5jcykgewogICAgICAgICAgICAgICAgIHRoaXMu
dmlzaXRGdW5jKGZ1bmMpOwpAQCAtMjQ1LDkgKzI1MCwxMyBAQCBjbGFzcyBDaGVja2VyIGV4dGVu
ZHMgVmlzaXRvciB7CiAgICAgCiAgICAgdmlzaXRUeXBlUmVmKG5vZGUpCiAgICAgewotICAgICAg
ICBpZiAoIW5vZGUudHlwZSkKKyAgICAgICAgaWYgKCFub2RlLnR5cGUgJiYgIW5vZGUucG9zc2li
bGVPdmVybG9hZHMpCiAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlR5cGUgcmVmZXJlbmNl
IHdpdGhvdXQgYSB0eXBlIGluIGNoZWNrZXI6ICIgKyBub2RlICsgIiBhdCAiICsgbm9kZS5vcmln
aW4pOwotICAgICAgICBpZiAoIShub2RlLnR5cGUgaW5zdGFuY2VvZiBTdHJ1Y3RUeXBlKSkKKyAg
ICAgICAgaWYgKCFub2RlLnR5cGUpCisgICAgICAgICAgICBub2RlLnJlc29sdmUobm9kZS5wb3Nz
aWJsZU92ZXJsb2FkcywgdGhpcy5fcHJvZ3JhbSk7CisgICAgICAgIGlmICghbm9kZS50eXBlIHx8
ICFub2RlLnR5cGUudmlzaXQpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlR5cGUgcmVm
ZXJlbmNlIHdpdGhvdXQgYSB0eXBlIGFmdGVyIHBvc3NpYmx5IHJlc29sdmluZyBpbiBjaGVja2Vy
OiAiICsgbm9kZSArICIgYXQgIiArIG5vZGUub3JpZ2luKTsKKyAgICAgICAgaWYgKCEobm9kZS50
eXBlIGluc3RhbmNlb2YgU3RydWN0VHlwZSkpIC8vIEZJWE1FOiBXaHkgZG9uJ3Qgd2UgcmVjdXJz
ZSBvbiBTdHJ1Y3RUeXBlcz8KICAgICAgICAgICAgIG5vZGUudHlwZS52aXNpdCh0aGlzKTsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0luZmVyVHlw
ZXNGb3JDYWxsLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvSW5mZXJUeXBlc0Zv
ckNhbGwuanMKaW5kZXggNWYzMmVkMWM0OTBhN2RmODk0MWU5MTljMTMwY2Y2NWVhYThiNmE0ZC4u
YmNmZWI5ODZjYWZmNDlmMDI4N2E4MzY3OGJmMTE1NjI4NDdmMDM4OSAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvSW5mZXJUeXBlc0ZvckNhbGwuanMKKysrIGIvVG9v
bHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvSW5mZXJUeXBlc0ZvckNhbGwuanMKQEAgLTM2LDEy
ICszNiw4IEBAIGZ1bmN0aW9uIGluZmVyVHlwZXNGb3JDYWxsKGZ1bmMsIGFyZ3VtZW50VHlwZXMs
IHJldHVyblR5cGUpCiAgICAgICAgIGlmICghYXJndW1lbnRUeXBlc1tpXS51bmlmeSh1bmlmaWNh
dGlvbkNvbnRleHQsIGZ1bmMucGFyYW1ldGVyc1tpXS50eXBlKSkKICAgICAgICAgICAgIHJldHVy
biB7ZmFpbHVyZTogbmV3IE92ZXJsb2FkUmVzb2x1dGlvbkZhaWx1cmUoZnVuYywgIkFyZ3VtZW50
ICMiICsgKGkgKyAxKSArICIgIiArIChmdW5jLnBhcmFtZXRlcnNbaV0ubmFtZSA/ICJmb3IgcGFy
YW1ldGVyICIgKyBmdW5jLnBhcmFtZXRlcnNbaV0ubmFtZSArICIgIiA6ICIiKSArICJkb2VzIG5v
dCBtYXRjaCAocGFzc2VkICIgKyBhcmd1bWVudFR5cGVzW2ldICsgIiwgcmVxdWlyZSAiICsgZnVu
Yy5wYXJhbWV0ZXJzW2ldLnR5cGUgKyAiKSIpfTsKICAgICB9Ci0gICAgaWYgKHJldHVyblR5cGUg
JiYgIXJldHVyblR5cGUudW5pZnkodW5pZmljYXRpb25Db250ZXh0LCBmdW5jLnJldHVyblR5cGUp
KSB7Ci0gICAgICAgIGlmIChmdW5jLnJldHVyblR5cGUudG9TdHJpbmcoKSA9PSAidmVjdG9yIikg
ewotICAgICAgICAgICAgcmV0dXJuVHlwZS51bmlmeSh1bmlmaWNhdGlvbkNvbnRleHQsIGZ1bmMu
cmV0dXJuVHlwZSkKLSAgICAgICAgfQorICAgIGlmIChyZXR1cm5UeXBlICYmICFyZXR1cm5UeXBl
LnVuaWZ5KHVuaWZpY2F0aW9uQ29udGV4dCwgZnVuYy5yZXR1cm5UeXBlKSkKICAgICAgICAgcmV0
dXJuIHtmYWlsdXJlOiBuZXcgT3ZlcmxvYWRSZXNvbHV0aW9uRmFpbHVyZShmdW5jLCAiUmV0dXJu
IHR5cGUgIiArIGZ1bmMucmV0dXJuVHlwZSArICIgZG9lcyBub3QgbWF0Y2ggIiArIHJldHVyblR5
cGUpfTsKLSAgICB9CiAgICAgbGV0IHZlcmlmaWNhdGlvblJlc3VsdCA9IHVuaWZpY2F0aW9uQ29u
dGV4dC52ZXJpZnkoKTsKICAgICBpZiAoIXZlcmlmaWNhdGlvblJlc3VsdC5yZXN1bHQpCiAgICAg
ICAgIHJldHVybiB7ZmFpbHVyZTogbmV3IE92ZXJsb2FkUmVzb2x1dGlvbkZhaWx1cmUoZnVuYywg
dmVyaWZpY2F0aW9uUmVzdWx0LnJlYXNvbil9OwpAQCAtNDksMyArNDUsMjEgQEAgZnVuY3Rpb24g
aW5mZXJUeXBlc0ZvckNhbGwoZnVuYywgYXJndW1lbnRUeXBlcywgcmV0dXJuVHlwZSkKICAgICBy
ZXR1cm4ge2Z1bmMsIHVuaWZpY2F0aW9uQ29udGV4dH07CiB9CiAKK2Z1bmN0aW9uIGluZmVyVHlw
ZXNGb3JUeXBlQXJndW1lbnRzKHR5cGUsIHR5cGVBcmd1bWVudHMpCit7CisgICAgaWYgKHR5cGVB
cmd1bWVudHMubGVuZ3RoICE9IHR5cGUudHlwZUFyZ3VtZW50cy5sZW5ndGgpCisgICAgICAgIHJl
dHVybiB7ZmFpbHVyZTogbmV3IFR5cGVPdmVybG9hZFJlc29sdXRpb25GYWlsdXJlKHR5cGUsICJX
cm9uZyBudW1iZXIgb2YgYXJndW1lbnRzIChwYXNzZWQgIiArIHR5cGVBcmd1bWVudHMubGVuZ3Ro
ICsgIiwgcmVxdWlyZSAiICsgdHlwZS50eXBlQXJndW1lbnRzLmxlbmd0aCArICIpIil9OworICAg
IGxldCB1bmlmaWNhdGlvbkNvbnRleHQgPSBuZXcgVW5pZmljYXRpb25Db250ZXh0KCk7CisKKyAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IHR5cGVBcmd1bWVudHMubGVuZ3RoOyArK2kpIHsKKyAgICAg
ICAgaWYgKCF0eXBlQXJndW1lbnRzW2ldKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJO
dWxsIHR5cGUgYXJndW1lbnQgYXQgaSA9ICIgKyBpKTsKKyAgICAgICAgaWYgKCF0eXBlQXJndW1l
bnRzW2ldLnVuaWZ5KHVuaWZpY2F0aW9uQ29udGV4dCwgdHlwZS50eXBlQXJndW1lbnRzW2ldKSkK
KyAgICAgICAgICAgIHJldHVybiB7ZmFpbHVyZTogbmV3IFR5cGVPdmVybG9hZFJlc29sdXRpb25G
YWlsdXJlKHR5cGUsICJBcmd1bWVudCAjIiArIChpICsgMSkgKyAiICIgKyAodHlwZS50eXBlQXJn
dW1lbnRzW2ldLm5hbWUgPyAiZm9yIHBhcmFtZXRlciAiICsgdHlwZS50eXBlQXJndW1lbnRzW2ld
Lm5hbWUgKyAiICIgOiAiIikgKyAiZG9lcyBub3QgbWF0Y2ggKHBhc3NlZCAiICsgdHlwZUFyZ3Vt
ZW50c1tpXSArICIsIHJlcXVpcmUgIiArIHR5cGUudHlwZUFyZ3VtZW50c1tpXS50eXBlICsgIiki
KX07CisgICAgfQorICAgIGxldCB2ZXJpZmljYXRpb25SZXN1bHQgPSB1bmlmaWNhdGlvbkNvbnRl
eHQudmVyaWZ5KCk7CisgICAgaWYgKCF2ZXJpZmljYXRpb25SZXN1bHQucmVzdWx0KQorICAgICAg
ICByZXR1cm4ge2ZhaWx1cmU6IG5ldyBUeXBlT3ZlcmxvYWRSZXNvbHV0aW9uRmFpbHVyZSh0eXBl
LCB2ZXJpZmljYXRpb25SZXN1bHQucmVhc29uKX07CisKKyAgICByZXR1cm4ge3R5cGUsIHVuaWZp
Y2F0aW9uQ29udGV4dH07Cit9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9JbnRyaW5zaWNzLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvSW50cmlu
c2ljcy5qcwppbmRleCA1MGQ0MGMwYzBlNDdlMTEyYmM3NGNjZmNjYjcwNDk0MjcxMTZiMGZiLi5m
ZDMyYmMyOGIzYjU5Y2EyYzkxMmM4ZjJlYTQ1YWJkMzU1NzU3MTM2IDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9JbnRyaW5zaWNzLmpzCisrKyBiL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL0ludHJpbnNpY3MuanMKQEAgLTMzLDE1ICszMyw3IEBAIGNsYXNz
IEludHJpbnNpY3MgewogICAgICAgICAvLyB0byBjYXRjaCB0aGUgaW50cmluc2ljcyBtdXN0IGJl
IGJhc2VkIG9uIHRoZSB0eXBlIG5hbWVzIHRoYXQgU3RhbmRhcmRMaWJyYXJ5LmpzIHVzZXMuCiAg
ICAgICAgIC8vIEZvciBleGFtcGxlLCBpZiBhIG5hdGl2ZSBmdW5jdGlvbiBpcyBkZWNsYXJlZCB1
c2luZyAiaW50IiByYXRoZXIgdGhhbiAiaW50IiwgdGhlbiB3ZSBtdXN0CiAgICAgICAgIC8vIHVz
ZSAiaW50IiBoZXJlLCBzaW5jZSB3ZSBkb24ndCB5ZXQga25vdyB0aGF0IHRoZXkgYXJlIHRoZSBz
YW1lIHR5cGUuCi0gICAgICAgIAotICAgICAgICB0aGlzLl9tYXAuc2V0KAotICAgICAgICAgICAg
Im5hdGl2ZSB0eXBlZGVmIHZvaWQiLAotICAgICAgICAgICAgdHlwZSA9PiB7Ci0gICAgICAgICAg
ICAgICAgdGhpcy52b2lkID0gdHlwZTsKLSAgICAgICAgICAgICAgICB0eXBlLnNpemUgPSAwOwot
ICAgICAgICAgICAgICAgIHR5cGUucG9wdWxhdGVEZWZhdWx0VmFsdWUgPSAoKSA9PiB7IH07Ci0g
ICAgICAgICAgICB9KTsKLSAgICAgICAgCisKICAgICAgICAgZnVuY3Rpb24gaXNCaXR3aXNlRXF1
aXZhbGVudChsZWZ0LCByaWdodCkKICAgICAgICAgewogICAgICAgICAgICAgbGV0IGRvdWJsZUFy
cmF5ID0gbmV3IEZsb2F0NjRBcnJheSgxKTsKQEAgLTU2LDU4ICs0OCw4MyBAQCBjbGFzcyBJbnRy
aW5zaWNzIHsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKKyAgICAgICAg
ZnVuY3Rpb24gY2FzdCh0eXBlZEFycmF5Q29uc3RydWN0b3IsIG51bWJlcikKKyAgICAgICAgewor
ICAgICAgICAgICAgdmFyIGFycmF5ID0gbmV3IHR5cGVkQXJyYXlDb25zdHJ1Y3RvcigxKTsKKyAg
ICAgICAgICAgIGFycmF5WzBdID0gbnVtYmVyOworICAgICAgICAgICAgcmV0dXJuIGFycmF5WzBd
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gYml0d2lzZUNhc3QodHlwZWRBcnJheUNv
bnN0cnVjdG9yMSwgdHlwZWRBcnJheUNvbnN0cnVjdG9yMiwgdmFsdWUpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGxldCB0eXBlZEFycmF5MSA9IG5ldyB0eXBlZEFycmF5Q29uc3RydWN0b3IxKDEp
OworICAgICAgICAgICAgbGV0IHR5cGVkQXJyYXkyID0gbmV3IHR5cGVkQXJyYXlDb25zdHJ1Y3Rv
cjIodHlwZWRBcnJheTEuYnVmZmVyKTsKKyAgICAgICAgICAgIHR5cGVkQXJyYXkxWzBdID0gdmFs
dWU7CisgICAgICAgICAgICByZXR1cm4gdHlwZWRBcnJheTJbMF07CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBjYXN0VG9IYWxmKG51bWJlcikKKyAgICAgICAgeworICAgICAgICAgICAg
Ly8gRklYTUU6IE1ha2UgdGhpcyBtYXRoIG9iZXkgSUVFRSA3NTQuCisgICAgICAgICAgICBpZiAo
TnVtYmVyLmlzTmFOKG51bWJlcikpCisgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyCisgICAg
ICAgICAgICBpZiAobnVtYmVyID4gNjU1MDQpCisgICAgICAgICAgICAgICAgcmV0dXJuIE51bWJl
ci5QT1NJVElWRV9JTkZJTklUWTsKKyAgICAgICAgICAgIGlmIChudW1iZXIgPCAtNjU1MDQpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIE51bWJlci5ORUdBVElWRV9JTkZJTklUWTsKKyAgICAgICAg
ICAgIGlmIChudW1iZXIgPiAwICYmIG51bWJlciA8IE1hdGgucG93KDIsIC0yNCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBpZiAobnVtYmVyIDwgMCAmJiBudW1iZXIg
PiAtTWF0aC5wb3coMiwgLTI0KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTA7CisgICAgICAg
ICAgICBsZXQgZG91YmxlQXJyYXkgPSBuZXcgRmxvYXQ2NEFycmF5KDEpOworICAgICAgICAgICAg
bGV0IHVpbnRBcnJheSA9IG5ldyBVaW50OEFycmF5KGRvdWJsZUFycmF5LmJ1ZmZlcik7CisgICAg
ICAgICAgICBkb3VibGVBcnJheVswXSA9IG51bWJlcjsKKyAgICAgICAgICAgIGxldCBzaWduID0g
dWludEFycmF5WzddICYgMHg4MDsKKyAgICAgICAgICAgIGxldCBleHBvbmVudCA9ICgodWludEFy
cmF5WzddICYgMHg3ZikgPDwgNCkgfCAoKHVpbnRBcnJheVs2XSAmIDB4ZjApID4+PiA0KTsKKyAg
ICAgICAgICAgIGxldCBzaWduaWZpY2FuZCA9ICgodWludEFycmF5WzZdICYgMHgwZikgPDwgNikg
fCAoKHVpbnRBcnJheVs1XSAmIDB4ZmMpID4+PiAyKTsKKworICAgICAgICAgICAgaWYgKChleHBv
bmVudCAtIDEwMjMpIDwgLTE0KSB7CisgICAgICAgICAgICAgICAgZXhwb25lbnQgPSAwOworICAg
ICAgICAgICAgICAgIHNpZ25pZmljYW5kID0gKE1hdGguYWJzKG51bWJlcikgKiBNYXRoLnBvdygy
LCAyNCkpID4+PiAwOworICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IE1hdGgucG93KDIsIC0x
NCkgKiBzaWduaWZpY2FuZCAvIDEwMjQ7CisgICAgICAgICAgICAgICAgaWYgKHNpZ24gIT0gMCkK
KyAgICAgICAgICAgICAgICAgICAgdmFsdWUgKj0gLTE7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHZhbHVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBkb3VibGVBcnJheVswXSA9IDA7
CisKKyAgICAgICAgICAgIHVpbnRBcnJheVs3XSB8PSBzaWduOworICAgICAgICAgICAgdWludEFy
cmF5WzddIHw9IChleHBvbmVudCA+Pj4gNCk7CisgICAgICAgICAgICB1aW50QXJyYXlbNl0gfD0g
KChleHBvbmVudCA8PCA0KSAmIDB4ZjApOworICAgICAgICAgICAgdWludEFycmF5WzZdIHw9IChz
aWduaWZpY2FuZCA+Pj4gNik7CisgICAgICAgICAgICB1aW50QXJyYXlbNV0gfD0gKChzaWduaWZp
Y2FuZCA8PCAyKSAmIDB4ZmMpOworCisgICAgICAgICAgICByZXR1cm4gZG91YmxlQXJyYXlbMF07
CisgICAgICAgIH0KKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAotICAgICAgICAgICAgIm5hdGl2
ZSB0eXBlZGVmIGludCIsCisgICAgICAgICAgICAibmF0aXZlIHR5cGVkZWYgdm9pZCIsCiAgICAg
ICAgICAgICB0eXBlID0+IHsKLSAgICAgICAgICAgICAgICB0aGlzLmludCA9IHR5cGU7Ci0gICAg
ICAgICAgICAgICAgdHlwZS5pc1ByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgdHlw
ZS5pc0ludCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgdHlwZS5pc051bWJlciA9IHRydWU7Ci0g
ICAgICAgICAgICAgICAgdHlwZS5pc1NpZ25lZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgdHlw
ZS5jYW5SZXByZXNlbnQgPSB2YWx1ZSA9PiBpc0JpdHdpc2VFcXVpdmFsZW50KHZhbHVlIHwgMCwg
dmFsdWUpOwotICAgICAgICAgICAgICAgIHR5cGUuc2l6ZSA9IDE7Ci0gICAgICAgICAgICAgICAg
dHlwZS5kZWZhdWx0VmFsdWUgPSAwOwotICAgICAgICAgICAgICAgIHR5cGUuY3JlYXRlTGl0ZXJh
bCA9IChvcmlnaW4sIHZhbHVlKSA9PiBJbnRMaXRlcmFsLndpdGhUeXBlKG9yaWdpbiwgdmFsdWUg
fCAwLCB0eXBlKTsKLSAgICAgICAgICAgICAgICB0eXBlLnN1Y2Nlc3NvclZhbHVlID0gdmFsdWUg
PT4gKHZhbHVlICsgMSkgfCAwOwotICAgICAgICAgICAgICAgIHR5cGUudmFsdWVzRXF1YWwgPSAo
YSwgYikgPT4gYSA9PT0gYjsKLSAgICAgICAgICAgICAgICB0eXBlLnBvcHVsYXRlRGVmYXVsdFZh
bHVlID0gKGJ1ZmZlciwgb2Zmc2V0KSA9PiBidWZmZXIuc2V0KG9mZnNldCwgMCk7Ci0gICAgICAg
ICAgICAgICAgdHlwZS5mb3JtYXRWYWx1ZUZyb21JbnRMaXRlcmFsID0gdmFsdWUgPT4gdmFsdWUg
fCAwOwotICAgICAgICAgICAgICAgIHR5cGUuZm9ybWF0VmFsdWVGcm9tVWludExpdGVyYWwgPSB2
YWx1ZSA9PiB2YWx1ZSB8IDA7Ci0gICAgICAgICAgICAgICAgdHlwZS5hbGxWYWx1ZXMgPSBmdW5j
dGlvbiooKSB7IAotICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSAweGZm
ZmZmZmZmOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGkgfCAw
OwotICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQge3ZhbHVlOiB2YWx1ZSwgbmFtZTogdmFs
dWV9OwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfTsKKyAgICAgICAg
ICAgICAgICB0aGlzLnZvaWQgPSB0eXBlOworICAgICAgICAgICAgICAgIHR5cGUuc2l6ZSA9IDA7
CisgICAgICAgICAgICAgICAgdHlwZS5wb3B1bGF0ZURlZmF1bHRWYWx1ZSA9ICgpID0+IHsgfTsK
ICAgICAgICAgICAgIH0pOwogCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCi0gICAgICAgICAgICAi
bmF0aXZlIHR5cGVkZWYgdWludCIsCisgICAgICAgICAgICAibmF0aXZlIHR5cGVkZWYgYm9vbCIs
CiAgICAgICAgICAgICB0eXBlID0+IHsKLSAgICAgICAgICAgICAgICB0aGlzLnVpbnQgPSB0eXBl
OworICAgICAgICAgICAgICAgIHRoaXMuYm9vbCA9IHR5cGU7CiAgICAgICAgICAgICAgICAgdHlw
ZS5pc1ByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgdHlwZS5pc0ludCA9IHRydWU7
Ci0gICAgICAgICAgICAgICAgdHlwZS5pc051bWJlciA9IHRydWU7Ci0gICAgICAgICAgICAgICAg
dHlwZS5pc1NpZ25lZCA9IGZhbHNlOwotICAgICAgICAgICAgICAgIHR5cGUuY2FuUmVwcmVzZW50
ID0gdmFsdWUgPT4gaXNCaXR3aXNlRXF1aXZhbGVudCh2YWx1ZSA+Pj4gMCwgdmFsdWUpOwogICAg
ICAgICAgICAgICAgIHR5cGUuc2l6ZSA9IDE7Ci0gICAgICAgICAgICAgICAgdHlwZS5kZWZhdWx0
VmFsdWUgPSAwOwotICAgICAgICAgICAgICAgIHR5cGUuY3JlYXRlTGl0ZXJhbCA9IChvcmlnaW4s
IHZhbHVlKSA9PiBJbnRMaXRlcmFsLndpdGhUeXBlKG9yaWdpbiwgdmFsdWUgPj4+IDAsIHR5cGUp
OwotICAgICAgICAgICAgICAgIHR5cGUuc3VjY2Vzc29yVmFsdWUgPSB2YWx1ZSA9PiAodmFsdWUg
KyAxKSA+Pj4gMDsKLSAgICAgICAgICAgICAgICB0eXBlLnZhbHVlc0VxdWFsID0gKGEsIGIpID0+
IGEgPT09IGI7Ci0gICAgICAgICAgICAgICAgdHlwZS5wb3B1bGF0ZURlZmF1bHRWYWx1ZSA9IChi
dWZmZXIsIG9mZnNldCkgPT4gYnVmZmVyLnNldChvZmZzZXQsIDApOwotICAgICAgICAgICAgICAg
IHR5cGUuZm9ybWF0VmFsdWVGcm9tSW50TGl0ZXJhbCA9IHZhbHVlID0+IHZhbHVlID4+PiAwOwot
ICAgICAgICAgICAgICAgIHR5cGUuZm9ybWF0VmFsdWVGcm9tVWludExpdGVyYWwgPSB2YWx1ZSA9
PiB2YWx1ZSA+Pj4gMDsKLSAgICAgICAgICAgICAgICB0eXBlLmFsbFZhbHVlcyA9IGZ1bmN0aW9u
KigpIHsgCi0gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IDB4ZmZmZmZm
ZmY7ICsraSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHt2YWx1ZTogaSwgbmFtZTog
aX07Ci0gICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICB0eXBlLnBvcHVsYXRlRGVm
YXVsdFZhbHVlID0gKGJ1ZmZlciwgb2Zmc2V0KSA9PiBidWZmZXIuc2V0KG9mZnNldCwgZmFsc2Up
OwogICAgICAgICAgICAgfSk7CiAKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAg
ICJuYXRpdmUgdHlwZWRlZiB1Y2hhciIsCiAgICAgICAgICAgICB0eXBlID0+IHsKICAgICAgICAg
ICAgICAgICB0aGlzLnVjaGFyID0gdHlwZTsKKyAgICAgICAgICAgICAgICB0eXBlLmlzUHJpbWl0
aXZlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICB0eXBlLmlzSW50ID0gdHJ1ZTsKICAgICAgICAg
ICAgICAgICB0eXBlLmlzTnVtYmVyID0gdHJ1ZTsKICAgICAgICAgICAgICAgICB0eXBlLmlzU2ln
bmVkID0gZmFsc2U7CkBAIC0xMjYsMTQ5ICsxNDMsMjk1IEBAIGNsYXNzIEludHJpbnNpY3Mgewog
ICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICB9KTsKIAorCisgICAgICAgICAgICB0aGlz
Ll9tYXAuc2V0KAorICAgICAgICAgICAgICJuYXRpdmUgdHlwZWRlZiB1c2hvcnQiLAorICAgICAg
ICAgICAgIHR5cGUgPT4geworICAgICAgICAgICAgICAgICB0aGlzLnVzaG9ydCA9IHR5cGU7Cisg
ICAgICAgICAgICAgICAgIHR5cGUuaXNQcmltaXRpdmUgPSB0cnVlOworICAgICAgICAgICAgICAg
ICB0eXBlLmlzSW50ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5pc051bWJlciA9IHRy
dWU7CisgICAgICAgICAgICAgICAgIHR5cGUuaXNTaWduZWQgPSBmYWxzZTsKKyAgICAgICAgICAg
ICAgICAgdHlwZS5jYW5SZXByZXNlbnQgPSB2YWx1ZSA9PiBpc0JpdHdpc2VFcXVpdmFsZW50KHZh
bHVlICYgMHhmZmZmLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgIHR5cGUuc2l6ZSA9IDE7Cisg
ICAgICAgICAgICAgICAgIHR5cGUuZGVmYXVsdFZhbHVlID0gMDsKKyAgICAgICAgICAgICAgICAg
dHlwZS5jcmVhdGVMaXRlcmFsID0gKG9yaWdpbiwgdmFsdWUpID0+IEludExpdGVyYWwud2l0aFR5
cGUob3JpZ2luLCB2YWx1ZSAmIDB4ZmZmZiwgdHlwZSk7CisgICAgICAgICAgICAgICAgIHR5cGUu
c3VjY2Vzc29yVmFsdWUgPSB2YWx1ZSA9PiAodmFsdWUgKyAxKSAmIDB4ZmZmZjsKKyAgICAgICAg
ICAgICAgICAgdHlwZS52YWx1ZXNFcXVhbCA9IChhLCBiKSA9PiBhID09PSBiOworICAgICAgICAg
ICAgICAgICB0eXBlLnBvcHVsYXRlRGVmYXVsdFZhbHVlID0gKGJ1ZmZlciwgb2Zmc2V0KSA9PiBi
dWZmZXIuc2V0KG9mZnNldCwgMCk7CisgICAgICAgICAgICAgICAgIHR5cGUuZm9ybWF0VmFsdWVG
cm9tSW50TGl0ZXJhbCA9IHZhbHVlID0+IHZhbHVlICYgMHhmZmZmOworICAgICAgICAgICAgICAg
ICB0eXBlLmZvcm1hdFZhbHVlRnJvbVVpbnRMaXRlcmFsID0gdmFsdWUgPT4gdmFsdWUgJiAweGZm
ZmY7CisgICAgICAgICAgICAgICAgIHR5cGUuYWxsVmFsdWVzID0gZnVuY3Rpb24qKCkgeworICAg
ICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gMHhmZmZmOyArK2kpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgeWllbGQge3ZhbHVlOiBpLCBuYW1lOiBpfTsKKyAgICAgICAg
ICAgICAgICAgfTsKKyAgICAgICAgICAgICB9KTsKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAot
ICAgICAgICAgICAgIm5hdGl2ZSB0eXBlZGVmIGZsb2F0IiwKLSAgICAgICAgICAgIHR5cGUgPT4g
ewotICAgICAgICAgICAgICAgIHRoaXMuZmxvYXQgPSB0eXBlOwotICAgICAgICAgICAgICAgIHR5
cGUuaXNQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICAgICAgICAgIHR5cGUuc2l6ZSA9IDE7Ci0g
ICAgICAgICAgICAgICAgdHlwZS5pc0Zsb2F0aW5nID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB0
eXBlLmlzTnVtYmVyID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB0eXBlLmNhblJlcHJlc2VudCA9
IHZhbHVlID0+IGlzQml0d2lzZUVxdWl2YWxlbnQoTWF0aC5mcm91bmQodmFsdWUpLCB2YWx1ZSk7
Ci0gICAgICAgICAgICAgICAgdHlwZS5wb3B1bGF0ZURlZmF1bHRWYWx1ZSA9IChidWZmZXIsIG9m
ZnNldCkgPT4gYnVmZmVyLnNldChvZmZzZXQsIDApOwotICAgICAgICAgICAgICAgIHR5cGUuZm9y
bWF0VmFsdWVGcm9tSW50TGl0ZXJhbCA9IHZhbHVlID0+IHZhbHVlOwotICAgICAgICAgICAgICAg
IHR5cGUuZm9ybWF0VmFsdWVGcm9tVWludExpdGVyYWwgPSB2YWx1ZSA9PiB2YWx1ZTsKLSAgICAg
ICAgICAgICAgICB0eXBlLmZvcm1hdFZhbHVlRnJvbUZsb2F0TGl0ZXJhbCA9IHZhbHVlID0+IE1h
dGguZnJvdW5kKHZhbHVlKTsKLSAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICJuYXRpdmUg
dHlwZWRlZiB1aW50IiwKKyAgICAgICAgICAgICB0eXBlID0+IHsKKyAgICAgICAgICAgICAgICAg
dGhpcy51aW50ID0gdHlwZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5pc1ByaW1pdGl2ZSA9IHRy
dWU7CisgICAgICAgICAgICAgICAgIHR5cGUuaXNJbnQgPSB0cnVlOworICAgICAgICAgICAgICAg
ICB0eXBlLmlzTnVtYmVyID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5pc1NpZ25lZCA9
IGZhbHNlOworICAgICAgICAgICAgICAgICB0eXBlLmNhblJlcHJlc2VudCA9IHZhbHVlID0+IGlz
Qml0d2lzZUVxdWl2YWxlbnQodmFsdWUgPj4+IDAsIHZhbHVlKTsKKyAgICAgICAgICAgICAgICAg
dHlwZS5zaXplID0gMTsKKyAgICAgICAgICAgICAgICAgdHlwZS5kZWZhdWx0VmFsdWUgPSAwOwor
ICAgICAgICAgICAgICAgICB0eXBlLmNyZWF0ZUxpdGVyYWwgPSAob3JpZ2luLCB2YWx1ZSkgPT4g
SW50TGl0ZXJhbC53aXRoVHlwZShvcmlnaW4sIHZhbHVlID4+PiAwLCB0eXBlKTsKKyAgICAgICAg
ICAgICAgICAgdHlwZS5zdWNjZXNzb3JWYWx1ZSA9IHZhbHVlID0+ICh2YWx1ZSArIDEpID4+PiAw
OworICAgICAgICAgICAgICAgICB0eXBlLnZhbHVlc0VxdWFsID0gKGEsIGIpID0+IGEgPT09IGI7
CisgICAgICAgICAgICAgICAgIHR5cGUucG9wdWxhdGVEZWZhdWx0VmFsdWUgPSAoYnVmZmVyLCBv
ZmZzZXQpID0+IGJ1ZmZlci5zZXQob2Zmc2V0LCAwKTsKKyAgICAgICAgICAgICAgICAgdHlwZS5m
b3JtYXRWYWx1ZUZyb21JbnRMaXRlcmFsID0gdmFsdWUgPT4gdmFsdWUgPj4+IDA7CisgICAgICAg
ICAgICAgICAgIHR5cGUuZm9ybWF0VmFsdWVGcm9tVWludExpdGVyYWwgPSB2YWx1ZSA9PiB2YWx1
ZSA+Pj4gMDsKKyAgICAgICAgICAgICAgICAgdHlwZS5hbGxWYWx1ZXMgPSBmdW5jdGlvbiooKSB7
CisgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSAweGZmZmZmZmZmOyAr
K2kpCisgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQge3ZhbHVlOiBpLCBuYW1lOiBpfTsK
KyAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICB9KTsKIAogICAgICAgICB0aGlzLl9t
YXAuc2V0KAotICAgICAgICAgICAgIm5hdGl2ZSB0eXBlZGVmIGJvb2wiLAotICAgICAgICAgICAg
dHlwZSA9PiB7Ci0gICAgICAgICAgICAgICAgdGhpcy5ib29sID0gdHlwZTsKLSAgICAgICAgICAg
ICAgICB0eXBlLmlzUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB0eXBlLnNpemUg
PSAxOwotICAgICAgICAgICAgICAgIHR5cGUucG9wdWxhdGVEZWZhdWx0VmFsdWUgPSAoYnVmZmVy
LCBvZmZzZXQpID0+IGJ1ZmZlci5zZXQob2Zmc2V0LCBmYWxzZSk7Ci0gICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgICAibmF0aXZlIHR5cGVkZWYgY2hhciIsCisgICAgICAgICAgICAgdHlwZSA9
PiB7CisgICAgICAgICAgICAgICAgIHRoaXMuY2hhciA9IHR5cGU7CisgICAgICAgICAgICAgICAg
IHR5cGUuaXNQcmltaXRpdmUgPSB0cnVlOworICAgICAgICAgICAgICAgICB0eXBlLmlzSW50ID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5pc051bWJlciA9IHRydWU7CisgICAgICAgICAg
ICAgICAgIHR5cGUuaXNTaWduZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICB0eXBlLmNhblJl
cHJlc2VudCA9IHZhbHVlID0+IGlzQml0d2lzZUVxdWl2YWxlbnQoY2FzdChJbnQ4QXJyYXksIHZh
bHVlKSwgdmFsdWUpOworICAgICAgICAgICAgICAgICB0eXBlLnNpemUgPSAxOworICAgICAgICAg
ICAgICAgICB0eXBlLmRlZmF1bHRWYWx1ZSA9IDA7CisgICAgICAgICAgICAgICAgIHR5cGUuY3Jl
YXRlTGl0ZXJhbCA9IChvcmlnaW4sIHZhbHVlKSA9PiBJbnRMaXRlcmFsLndpdGhUeXBlKG9yaWdp
biwgY2FzdChJbnQ4QXJyYXksIHZhbHVlKSwgdHlwZSk7CisgICAgICAgICAgICAgICAgIHR5cGUu
c3VjY2Vzc29yVmFsdWUgPSB2YWx1ZSA9PiBjYXN0KEludDhBcnJheSwgdmFsdWUgKyAxKTsKKyAg
ICAgICAgICAgICAgICAgdHlwZS52YWx1ZXNFcXVhbCA9IChhLCBiKSA9PiBhID09PSBiOworICAg
ICAgICAgICAgICAgICB0eXBlLnBvcHVsYXRlRGVmYXVsdFZhbHVlID0gKGJ1ZmZlciwgb2Zmc2V0
KSA9PiBidWZmZXIuc2V0KG9mZnNldCwgMCk7CisgICAgICAgICAgICAgICAgIHR5cGUuZm9ybWF0
VmFsdWVGcm9tSW50TGl0ZXJhbCA9IHZhbHVlID0+IGNhc3QoSW50OEFycmF5LCB2YWx1ZSk7Cisg
ICAgICAgICAgICAgICAgIHR5cGUuZm9ybWF0VmFsdWVGcm9tVWludExpdGVyYWwgPSB2YWx1ZSA9
PiBjYXN0KEludDhBcnJheSwgdmFsdWUpOworICAgICAgICAgICAgICAgICB0eXBlLmFsbFZhbHVl
cyA9IGZ1bmN0aW9uKigpIHsKKyAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBp
IDw9IDB4ZmY7ICsraSkgeworICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGNh
c3QoSW50OEFycmF5LCBpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCB7dmFsdWU6
IHZhbHVlLCBuYW1lOiB2YWx1ZX07CisgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgIH07CisgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgdGhpcy5fbWFwLnNldCgKKyAg
ICAgICAgICAgICAibmF0aXZlIHR5cGVkZWYgc2hvcnQiLAorICAgICAgICAgICAgIHR5cGUgPT4g
eworICAgICAgICAgICAgICAgICB0aGlzLnNob3J0ID0gdHlwZTsKKyAgICAgICAgICAgICAgICAg
dHlwZS5pc1ByaW1pdGl2ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgIHR5cGUuaXNJbnQgPSB0
cnVlOworICAgICAgICAgICAgICAgICB0eXBlLmlzTnVtYmVyID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICAgdHlwZS5pc1NpZ25lZCA9IHRydWU7CisgICAgICAgICAgICAgICAgIHR5cGUuY2FuUmVw
cmVzZW50ID0gdmFsdWUgPT4gaXNCaXR3aXNlRXF1aXZhbGVudChjYXN0KEludDE2QXJyYXksIHZh
bHVlKSwgdmFsdWUpOworICAgICAgICAgICAgICAgICB0eXBlLnNpemUgPSAxOworICAgICAgICAg
ICAgICAgICB0eXBlLmRlZmF1bHRWYWx1ZSA9IDA7CisgICAgICAgICAgICAgICAgIHR5cGUuY3Jl
YXRlTGl0ZXJhbCA9IChvcmlnaW4sIHZhbHVlKSA9PiBJbnRMaXRlcmFsLndpdGhUeXBlKG9yaWdp
biwgY2FzdChJbnQxNkFycmF5LCB2YWx1ZSksIHR5cGUpOworICAgICAgICAgICAgICAgICB0eXBl
LnN1Y2Nlc3NvclZhbHVlID0gdmFsdWUgPT4gY2FzdChJbnQxNkFycmF5LCB2YWx1ZSArIDEpOwor
ICAgICAgICAgICAgICAgICB0eXBlLnZhbHVlc0VxdWFsID0gKGEsIGIpID0+IGEgPT09IGI7Cisg
ICAgICAgICAgICAgICAgIHR5cGUucG9wdWxhdGVEZWZhdWx0VmFsdWUgPSAoYnVmZmVyLCBvZmZz
ZXQpID0+IGJ1ZmZlci5zZXQob2Zmc2V0LCAwKTsKKyAgICAgICAgICAgICAgICAgdHlwZS5mb3Jt
YXRWYWx1ZUZyb21JbnRMaXRlcmFsID0gdmFsdWUgPT4gY2FzdChJbnQxNkFycmF5LCB2YWx1ZSk7
CisgICAgICAgICAgICAgICAgIHR5cGUuZm9ybWF0VmFsdWVGcm9tVWludExpdGVyYWwgPSB2YWx1
ZSA9PiBjYXN0KEludDE2QXJyYXksIHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgdHlwZS5hbGxW
YWx1ZXMgPSBmdW5jdGlvbiooKSB7CisgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0g
MDsgaSA8PSAweGZmZmY7ICsraSkgeworICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1
ZSA9IGNhc3QoSW50MTZBcnJheSwgaSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQg
e3ZhbHVlOiB2YWx1ZSwgbmFtZTogdmFsdWV9OworICAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICB9OworICAgICAgICAgICAgIH0pOworCisgICAgICAgIHRoaXMuX21hcC5z
ZXQoCisgICAgICAgICAgICAgIm5hdGl2ZSB0eXBlZGVmIGludCIsCisgICAgICAgICAgICAgdHlw
ZSA9PiB7CisgICAgICAgICAgICAgICAgIHRoaXMuaW50ID0gdHlwZTsKKyAgICAgICAgICAgICAg
ICAgdHlwZS5pc1ByaW1pdGl2ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgIHR5cGUuaXNJbnQg
PSB0cnVlOworICAgICAgICAgICAgICAgICB0eXBlLmlzTnVtYmVyID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICAgdHlwZS5pc1NpZ25lZCA9IHRydWU7CisgICAgICAgICAgICAgICAgIHR5cGUuY2Fu
UmVwcmVzZW50ID0gdmFsdWUgPT4gaXNCaXR3aXNlRXF1aXZhbGVudCh2YWx1ZSB8IDAsIHZhbHVl
KTsKKyAgICAgICAgICAgICAgICAgdHlwZS5zaXplID0gMTsKKyAgICAgICAgICAgICAgICAgdHlw
ZS5kZWZhdWx0VmFsdWUgPSAwOworICAgICAgICAgICAgICAgICB0eXBlLmNyZWF0ZUxpdGVyYWwg
PSAob3JpZ2luLCB2YWx1ZSkgPT4gSW50TGl0ZXJhbC53aXRoVHlwZShvcmlnaW4sIHZhbHVlIHwg
MCwgdHlwZSk7CisgICAgICAgICAgICAgICAgIHR5cGUuc3VjY2Vzc29yVmFsdWUgPSB2YWx1ZSA9
PiAodmFsdWUgKyAxKSB8IDA7CisgICAgICAgICAgICAgICAgIHR5cGUudmFsdWVzRXF1YWwgPSAo
YSwgYikgPT4gYSA9PT0gYjsKKyAgICAgICAgICAgICAgICAgdHlwZS5wb3B1bGF0ZURlZmF1bHRW
YWx1ZSA9IChidWZmZXIsIG9mZnNldCkgPT4gYnVmZmVyLnNldChvZmZzZXQsIDApOworICAgICAg
ICAgICAgICAgICB0eXBlLmZvcm1hdFZhbHVlRnJvbUludExpdGVyYWwgPSB2YWx1ZSA9PiB2YWx1
ZSB8IDA7CisgICAgICAgICAgICAgICAgIHR5cGUuZm9ybWF0VmFsdWVGcm9tVWludExpdGVyYWwg
PSB2YWx1ZSA9PiB2YWx1ZSB8IDA7CisgICAgICAgICAgICAgICAgIHR5cGUuYWxsVmFsdWVzID0g
ZnVuY3Rpb24qKCkgeworICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0g
MHhmZmZmZmZmZjsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0g
aSB8IDA7CisgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQge3ZhbHVlOiB2YWx1ZSwgbmFt
ZTogdmFsdWV9OworICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICB9Owor
ICAgICAgICAgICAgIH0pOworCisgICAgICAgICB0aGlzLl9tYXAuc2V0KAorICAgICAgICAgICAg
ICJuYXRpdmUgdHlwZWRlZiBoYWxmIiwKKyAgICAgICAgICAgICB0eXBlID0+IHsKKyAgICAgICAg
ICAgICAgICAgdGhpcy5oYWxmID0gdHlwZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5pc1ByaW1p
dGl2ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgIHR5cGUuc2l6ZSA9IDE7CisgICAgICAgICAg
ICAgICAgIHR5cGUuaXNGbG9hdGluZyA9IHRydWU7CisgICAgICAgICAgICAgICAgIHR5cGUuaXNO
dW1iZXIgPSB0cnVlOworICAgICAgICAgICAgICAgICB0eXBlLmNhblJlcHJlc2VudCA9IHZhbHVl
ID0+IGlzQml0d2lzZUVxdWl2YWxlbnQoY2FzdFRvSGFsZih2YWx1ZSksIHZhbHVlKTsKKyAgICAg
ICAgICAgICAgICAgdHlwZS5wb3B1bGF0ZURlZmF1bHRWYWx1ZSA9IChidWZmZXIsIG9mZnNldCkg
PT4gYnVmZmVyLnNldChvZmZzZXQsIDApOworICAgICAgICAgICAgICAgICB0eXBlLmZvcm1hdFZh
bHVlRnJvbUludExpdGVyYWwgPSB2YWx1ZSA9PiB2YWx1ZTsKKyAgICAgICAgICAgICAgICAgdHlw
ZS5mb3JtYXRWYWx1ZUZyb21VaW50TGl0ZXJhbCA9IHZhbHVlID0+IHZhbHVlOworICAgICAgICAg
ICAgICAgICB0eXBlLmZvcm1hdFZhbHVlRnJvbUZsb2F0TGl0ZXJhbCA9IHZhbHVlID0+IGNhc3RU
b0hhbGYodmFsdWUpOworICAgICAgICAgICAgIH0pOworCisgICAgICAgICB0aGlzLl9tYXAuc2V0
KAorICAgICAgICAgICAgICJuYXRpdmUgdHlwZWRlZiBmbG9hdCIsCisgICAgICAgICAgICAgdHlw
ZSA9PiB7CisgICAgICAgICAgICAgICAgIHRoaXMuZmxvYXQgPSB0eXBlOworICAgICAgICAgICAg
ICAgICB0eXBlLmlzUHJpbWl0aXZlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5zaXpl
ID0gMTsKKyAgICAgICAgICAgICAgICAgdHlwZS5pc0Zsb2F0aW5nID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICAgdHlwZS5pc051bWJlciA9IHRydWU7CisgICAgICAgICAgICAgICAgIHR5cGUuY2Fu
UmVwcmVzZW50ID0gdmFsdWUgPT4gaXNCaXR3aXNlRXF1aXZhbGVudChNYXRoLmZyb3VuZCh2YWx1
ZSksIHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgdHlwZS5wb3B1bGF0ZURlZmF1bHRWYWx1ZSA9
IChidWZmZXIsIG9mZnNldCkgPT4gYnVmZmVyLnNldChvZmZzZXQsIDApOworICAgICAgICAgICAg
ICAgICB0eXBlLmZvcm1hdFZhbHVlRnJvbUludExpdGVyYWwgPSB2YWx1ZSA9PiB2YWx1ZTsKKyAg
ICAgICAgICAgICAgICAgdHlwZS5mb3JtYXRWYWx1ZUZyb21VaW50TGl0ZXJhbCA9IHZhbHVlID0+
IHZhbHVlOworICAgICAgICAgICAgICAgICB0eXBlLmZvcm1hdFZhbHVlRnJvbUZsb2F0TGl0ZXJh
bCA9IHZhbHVlID0+IE1hdGguZnJvdW5kKHZhbHVlKTsKKyAgICAgICAgICAgICB9KTsKKworICAg
ICAgICB0aGlzLl9tYXAuc2V0KAorICAgICAgICAgICAgICJuYXRpdmUgdHlwZWRlZiBhdG9taWNf
aW50IiwKKyAgICAgICAgICAgICB0eXBlID0+IHsKKyAgICAgICAgICAgICAgICAgdGhpcy5hdG9t
aWNfaW50ID0gdHlwZTsKKyAgICAgICAgICAgICAgICAgLy8gRklYTUU6IEZpZ3VyZSBvdXQgd2hh
dCB0byBwdXQgaGVyZS4KKyAgICAgICAgICAgICB9KTsKKworICAgICAgICB0aGlzLl9tYXAuc2V0
KAorICAgICAgICAgICAgICJuYXRpdmUgdHlwZWRlZiBhdG9taWNfdWludCIsCisgICAgICAgICAg
ICAgdHlwZSA9PiB7CisgICAgICAgICAgICAgICAgIHRoaXMuYXRvbWljX3VpbnQgPSB0eXBlOwor
ICAgICAgICAgICAgICAgICAvLyBGSVhNRTogRmlndXJlIG91dCB3aGF0IHRvIHB1dCBoZXJlLgor
ICAgICAgICAgICAgIH0pOwogCiAgICAgICAgIGZvciAobGV0IHZlY3RvclR5cGUgb2YgVmVjdG9y
RWxlbWVudFR5cGVzKSB7Ci0gICAgICAgICAgICBmb3IgKGxldCB2ZWN0b3JTaXplIG9mIFZlY3Rv
ckVsZW1lbnRTaXplcykKLSAgICAgICAgICAgICAgICB0aGlzLl9tYXAuc2V0KGBuYXRpdmUgdHlw
ZWRlZiB2ZWN0b3I8JHt2ZWN0b3JUeXBlfSwgJHt2ZWN0b3JTaXplfT5gLCB0eXBlID0+IHt9KTsK
KyAgICAgICAgICAgIGZvciAobGV0IHZlY3RvclNpemUgb2YgVmVjdG9yRWxlbWVudFNpemVzKSB7
CisgICAgICAgICAgICAgICAgdGhpcy5fbWFwLnNldChgbmF0aXZlIHR5cGVkZWYgdmVjdG9yPCR7
dmVjdG9yVHlwZX0sICR7dmVjdG9yU2l6ZX0+YCwgdHlwZSA9PiB7CisgICAgICAgICAgICAgICAg
ICAgIHRoaXNbYHZlY3Rvcjwke3ZlY3RvclR5cGV9LCAke3ZlY3RvclNpemV9PmBdID0gdHlwZTsK
KyAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IEZpZ3VyZSBvdXQgd2hhdCB0byBwdXQgaGVy
ZS4KKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAg
ICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBvcGVyYXRv
ciBpbnQodWludCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVu
Yy5pbXBsZW1lbnRhdGlvbiA9IChbdmFsdWVdKSA9PiBFUHRyLmJveCh2YWx1ZS5sb2FkVmFsdWUo
KSB8IDApOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5z
ZXQoCiAgICAgICAgICAgICAibmF0aXZlIG9wZXJhdG9yIGludCh1Y2hhcikiLAogICAgICAgICAg
ICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbdmFs
dWVdKSA9PiBFUHRyLmJveCh2YWx1ZS5sb2FkVmFsdWUoKSB8IDApOwogICAgICAgICAgICAgfSk7
Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZl
IG9wZXJhdG9yIGludChmbG9hdCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAg
ICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbdmFsdWVdKSA9PiBFUHRyLmJveCh2YWx1ZS5s
b2FkVmFsdWUoKSB8IDApOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRo
aXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIG9wZXJhdG9yIHVpbnQoaW50KSIsCiAg
ICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9u
ID0gKFt2YWx1ZV0pID0+IEVQdHIuYm94KHZhbHVlLmxvYWRWYWx1ZSgpID4+PiAwKTsKICAgICAg
ICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAg
ICAgIm5hdGl2ZSBvcGVyYXRvciB1aW50KHVjaGFyKSIsCiAgICAgICAgICAgICBmdW5jID0+IHsK
ICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFt2YWx1ZV0pID0+IEVQdHIu
Ym94KHZhbHVlLmxvYWRWYWx1ZSgpID4+PiAwKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAK
KwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBvcGVyYXRvciB1
aW50KGZsb2F0KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5j
LmltcGxlbWVudGF0aW9uID0gKFt2YWx1ZV0pID0+IEVQdHIuYm94KHZhbHVlLmxvYWRWYWx1ZSgp
ID4+PiAwKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAu
c2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBvcGVyYXRvciB1Y2hhcihpbnQpIiwKICAgICAgICAg
ICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW3Zh
bHVlXSkgPT4gRVB0ci5ib3godmFsdWUubG9hZFZhbHVlKCkgJiAweGZmKTsKICAgICAgICAgICAg
IH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5h
dGl2ZSBvcGVyYXRvciB1Y2hhcih1aW50KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAg
ICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFt2YWx1ZV0pID0+IEVQdHIuYm94KHZh
bHVlLmxvYWRWYWx1ZSgpICYgMHhmZik7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgCisKICAg
ICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUgb3BlcmF0b3IgdWNoYXIo
ZmxvYXQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1w
bGVtZW50YXRpb24gPSAoW3ZhbHVlXSkgPT4gRVB0ci5ib3godmFsdWUubG9hZFZhbHVlKCkgJiAw
eGZmKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0
KAogICAgICAgICAgICAgIm5hdGl2ZSBvcGVyYXRvciBmbG9hdChpbnQpIiwKICAgICAgICAgICAg
IGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW3ZhbHVl
XSkgPT4gRVB0ci5ib3goTWF0aC5mcm91bmQodmFsdWUubG9hZFZhbHVlKCkpKTsKICAgICAgICAg
ICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAg
Im5hdGl2ZSBvcGVyYXRvciBmbG9hdCh1aW50KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAg
ICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFt2YWx1ZV0pID0+IEVQdHIuYm94
KE1hdGguZnJvdW5kKHZhbHVlLmxvYWRWYWx1ZSgpKSk7CiAgICAgICAgICAgICB9KTsKLSAgICAg
ICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUgb3BlcmF0
b3IgZmxvYXQodWNoYXIpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAg
IGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW3ZhbHVlXSkgPT4gRVB0ci5ib3goTWF0aC5mcm91bmQo
dmFsdWUubG9hZFZhbHVlKCkpKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAg
ICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBpbnQgb3BlcmF0b3IrKGludCxp
bnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVt
ZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5i
b3goKGxlZnQubG9hZFZhbHVlKCkgKyByaWdodC5sb2FkVmFsdWUoKSkgfCAwKTsKICAgICAgICAg
ICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAg
Im5hdGl2ZSB1aW50IG9wZXJhdG9yKyh1aW50LHVpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4g
ewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkg
PT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3goKGxlZnQubG9hZFZhbHVlKCkgKyByaWdo
dC5sb2FkVmFsdWUoKSkgPj4+IDApOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAg
ICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIGZsb2F0IG9wZXJhdG9yKyhm
bG9hdCxmbG9hdCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVu
Yy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PgogICAgICAgICAgICAgICAgICAg
ICBFUHRyLmJveChNYXRoLmZyb3VuZChsZWZ0LmxvYWRWYWx1ZSgpICsgcmlnaHQubG9hZFZhbHVl
KCkpKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0
KAogICAgICAgICAgICAgIm5hdGl2ZSBpbnQgb3BlcmF0b3ItKGludCxpbnQpIiwKICAgICAgICAg
ICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xl
ZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3goKGxlZnQubG9hZFZh
bHVlKCkgLSByaWdodC5sb2FkVmFsdWUoKSkgfCAwKTsKICAgICAgICAgICAgIH0pOwotICAgICAg
ICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSB1aW50IG9w
ZXJhdG9yLSh1aW50LHVpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAg
ICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAg
ICAgICAgICAgRVB0ci5ib3goKGxlZnQubG9hZFZhbHVlKCkgLSByaWdodC5sb2FkVmFsdWUoKSkg
Pj4+IDApOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5z
ZXQoCiAgICAgICAgICAgICAibmF0aXZlIGZsb2F0IG9wZXJhdG9yLShmbG9hdCxmbG9hdCkiLAog
ICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlv
biA9IChbbGVmdCwgcmlnaHRdKSA9PgogICAgICAgICAgICAgICAgICAgICBFUHRyLmJveChNYXRo
LmZyb3VuZChsZWZ0LmxvYWRWYWx1ZSgpIC0gcmlnaHQubG9hZFZhbHVlKCkpKTsKICAgICAgICAg
ICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAg
Im5hdGl2ZSBpbnQgb3BlcmF0b3IqKGludCxpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewpA
QCAtMjc2LDIyOSArNDM5LDIyOSBAQCBjbGFzcyBJbnRyaW5zaWNzIHsKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIEVQdHIuYm94KChsZWZ0LmxvYWRWYWx1ZSgpICogcmlnaHQubG9hZFZhbHVl
KCkpIHwgMCk7CiAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAK
KwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSB1aW50IG9wZXJh
dG9yKih1aW50LHVpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAg
IGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAg
ICAgICAgRVB0ci5ib3goKGxlZnQubG9hZFZhbHVlKCkgKiByaWdodC5sb2FkVmFsdWUoKSkgPj4+
IDApOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQo
CiAgICAgICAgICAgICAibmF0aXZlIGZsb2F0IG9wZXJhdG9yKihmbG9hdCxmbG9hdCkiLAogICAg
ICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9
IChbbGVmdCwgcmlnaHRdKSA9PgogICAgICAgICAgICAgICAgICAgICBFUHRyLmJveChNYXRoLmZy
b3VuZChsZWZ0LmxvYWRWYWx1ZSgpICogcmlnaHQubG9hZFZhbHVlKCkpKTsKICAgICAgICAgICAg
IH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5h
dGl2ZSBpbnQgb3BlcmF0b3IvKGludCxpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAg
ICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAg
ICAgICAgICAgICAgICAgICAgRVB0ci5ib3goKGxlZnQubG9hZFZhbHVlKCkgLyByaWdodC5sb2Fk
VmFsdWUoKSkgfCAwKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlz
Ll9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSB1aW50IG9wZXJhdG9yLyh1aW50LHVpbnQp
IiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50
YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3go
KGxlZnQubG9hZFZhbHVlKCkgLyByaWdodC5sb2FkVmFsdWUoKSkgPj4+IDApOwogICAgICAgICAg
ICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAi
bmF0aXZlIGludCBvcGVyYXRvciYoaW50LGludCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAg
ICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9Pgog
ICAgICAgICAgICAgICAgICAgICBFUHRyLmJveChsZWZ0LmxvYWRWYWx1ZSgpICYgcmlnaHQubG9h
ZFZhbHVlKCkpOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21h
cC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIHVpbnQgb3BlcmF0b3ImKHVpbnQsdWludCkiLAog
ICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlv
biA9IChbbGVmdCwgcmlnaHRdKSA9PgogICAgICAgICAgICAgICAgICAgICBFUHRyLmJveCgobGVm
dC5sb2FkVmFsdWUoKSAmIHJpZ2h0LmxvYWRWYWx1ZSgpKSA+Pj4gMCk7CiAgICAgICAgICAgICB9
KTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRp
dmUgaW50IG9wZXJhdG9yfChpbnQsaW50KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAg
ICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+CiAgICAg
ICAgICAgICAgICAgICAgIEVQdHIuYm94KGxlZnQubG9hZFZhbHVlKCkgfCByaWdodC5sb2FkVmFs
dWUoKSk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNl
dCgKICAgICAgICAgICAgICJuYXRpdmUgdWludCBvcGVyYXRvcnwodWludCx1aW50KSIsCiAgICAg
ICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0g
KFtsZWZ0LCByaWdodF0pID0+CiAgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KChsZWZ0Lmxv
YWRWYWx1ZSgpIHwgcmlnaHQubG9hZFZhbHVlKCkpID4+PiAwKTsKICAgICAgICAgICAgIH0pOwot
ICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBp
bnQgb3BlcmF0b3JeKGludCxpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAg
ICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAg
ICAgICAgICAgICAgRVB0ci5ib3gobGVmdC5sb2FkVmFsdWUoKSBeIHJpZ2h0LmxvYWRWYWx1ZSgp
KTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAog
ICAgICAgICAgICAgIm5hdGl2ZSB1aW50IG9wZXJhdG9yXih1aW50LHVpbnQpIiwKICAgICAgICAg
ICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xl
ZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3goKGxlZnQubG9hZFZh
bHVlKCkgXiByaWdodC5sb2FkVmFsdWUoKSkgPj4+IDApOwogICAgICAgICAgICAgfSk7Ci0gICAg
ICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIGludCBv
cGVyYXRvcjw8KGludCx1aW50KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAg
ICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+CiAgICAgICAgICAg
ICAgICAgICAgIEVQdHIuYm94KGxlZnQubG9hZFZhbHVlKCkgPDwgcmlnaHQubG9hZFZhbHVlKCkp
OwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAg
ICAgICAgICAgICAibmF0aXZlIHVpbnQgb3BlcmF0b3I8PCh1aW50LHVpbnQpIiwKICAgICAgICAg
ICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xl
ZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3goKGxlZnQubG9hZFZh
bHVlKCkgPDwgcmlnaHQubG9hZFZhbHVlKCkpID4+PiAwKTsKICAgICAgICAgICAgIH0pOwotICAg
ICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBpbnQg
b3BlcmF0b3I+PihpbnQsdWludCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAg
ICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PgogICAgICAgICAg
ICAgICAgICAgICBFUHRyLmJveChsZWZ0LmxvYWRWYWx1ZSgpID4+IHJpZ2h0LmxvYWRWYWx1ZSgp
KTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAog
ICAgICAgICAgICAgIm5hdGl2ZSB1aW50IG9wZXJhdG9yPj4odWludCx1aW50KSIsCiAgICAgICAg
ICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFts
ZWZ0LCByaWdodF0pID0+CiAgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KGxlZnQubG9hZFZh
bHVlKCkgPj4+IHJpZ2h0LmxvYWRWYWx1ZSgpKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAK
KwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBpbnQgb3BlcmF0
b3J+KGludCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5p
bXBsZW1lbnRhdGlvbiA9IChbdmFsdWVdKSA9PiBFUHRyLmJveCh+dmFsdWUubG9hZFZhbHVlKCkp
OwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAg
ICAgICAgICAgICAibmF0aXZlIHVpbnQgb3BlcmF0b3J+KHVpbnQpIiwKICAgICAgICAgICAgIGZ1
bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW3ZhbHVlXSkg
PT4gRVB0ci5ib3goKH52YWx1ZS5sb2FkVmFsdWUoKSkgPj4+IDApOwogICAgICAgICAgICAgfSk7
Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZl
IGZsb2F0IG9wZXJhdG9yLyhmbG9hdCxmbG9hdCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAg
ICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9Pgog
ICAgICAgICAgICAgICAgICAgICBFUHRyLmJveChNYXRoLmZyb3VuZChsZWZ0LmxvYWRWYWx1ZSgp
IC8gcmlnaHQubG9hZFZhbHVlKCkpKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAg
ICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBib29sIG9wZXJhdG9yPT0o
aW50LGludCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5p
bXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PgogICAgICAgICAgICAgICAgICAgICBF
UHRyLmJveChsZWZ0LmxvYWRWYWx1ZSgpID09IHJpZ2h0LmxvYWRWYWx1ZSgpKTsKICAgICAgICAg
ICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAg
Im5hdGl2ZSBib29sIG9wZXJhdG9yPT0odWludCx1aW50KSIsCiAgICAgICAgICAgICBmdW5jID0+
IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0p
ID0+CiAgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KGxlZnQubG9hZFZhbHVlKCkgPT0gcmln
aHQubG9hZFZhbHVlKCkpOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRo
aXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIGJvb2wgb3BlcmF0b3I9PShib29sLGJv
b2wpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVt
ZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5i
b3gobGVmdC5sb2FkVmFsdWUoKSA9PSByaWdodC5sb2FkVmFsdWUoKSk7CiAgICAgICAgICAgICB9
KTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRp
dmUgYm9vbCBvcGVyYXRvcj09KGZsb2F0LGZsb2F0KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsK
ICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+
CiAgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KGxlZnQubG9hZFZhbHVlKCkgPT0gcmlnaHQu
bG9hZFZhbHVlKCkpOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMu
X21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIGJvb2wgb3BlcmF0b3I8KGludCxpbnQpIiwK
ICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRp
b24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3gobGVm
dC5sb2FkVmFsdWUoKSA8IHJpZ2h0LmxvYWRWYWx1ZSgpKTsKICAgICAgICAgICAgIH0pOwotICAg
ICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBib29s
IG9wZXJhdG9yPCh1aW50LHVpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAg
ICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAg
ICAgICAgICAgICAgRVB0ci5ib3gobGVmdC5sb2FkVmFsdWUoKSA8IHJpZ2h0LmxvYWRWYWx1ZSgp
KTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAog
ICAgICAgICAgICAgIm5hdGl2ZSBib29sIG9wZXJhdG9yPChmbG9hdCxmbG9hdCkiLAogICAgICAg
ICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChb
bGVmdCwgcmlnaHRdKSA9PgogICAgICAgICAgICAgICAgICAgICBFUHRyLmJveChsZWZ0LmxvYWRW
YWx1ZSgpIDwgcmlnaHQubG9hZFZhbHVlKCkpOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAor
CiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIGJvb2wgb3BlcmF0
b3I8PShpbnQsaW50KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBm
dW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+CiAgICAgICAgICAgICAgICAg
ICAgIEVQdHIuYm94KGxlZnQubG9hZFZhbHVlKCkgPD0gcmlnaHQubG9hZFZhbHVlKCkpOwogICAg
ICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAg
ICAgICAibmF0aXZlIGJvb2wgb3BlcmF0b3I8PSh1aW50LHVpbnQpIiwKICAgICAgICAgICAgIGZ1
bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJp
Z2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3gobGVmdC5sb2FkVmFsdWUoKSA8
PSByaWdodC5sb2FkVmFsdWUoKSk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgCisKICAgICAg
ICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUgYm9vbCBvcGVyYXRvcjw9KGZs
b2F0LGZsb2F0KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5j
LmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+CiAgICAgICAgICAgICAgICAgICAg
IEVQdHIuYm94KGxlZnQubG9hZFZhbHVlKCkgPD0gcmlnaHQubG9hZFZhbHVlKCkpOwogICAgICAg
ICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAg
ICAibmF0aXZlIGJvb2wgb3BlcmF0b3I+KGludCxpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4g
ewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkg
PT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3gobGVmdC5sb2FkVmFsdWUoKSA+IHJpZ2h0
LmxvYWRWYWx1ZSgpKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlz
Ll9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBib29sIG9wZXJhdG9yPih1aW50LHVpbnQp
IiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50
YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3go
bGVmdC5sb2FkVmFsdWUoKSA+IHJpZ2h0LmxvYWRWYWx1ZSgpKTsKICAgICAgICAgICAgIH0pOwot
ICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBi
b29sIG9wZXJhdG9yPihmbG9hdCxmbG9hdCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAg
ICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PgogICAg
ICAgICAgICAgICAgICAgICBFUHRyLmJveChsZWZ0LmxvYWRWYWx1ZSgpID4gcmlnaHQubG9hZFZh
bHVlKCkpOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5z
ZXQoCiAgICAgICAgICAgICAibmF0aXZlIGJvb2wgb3BlcmF0b3I+PShpbnQsaW50KSIsCiAgICAg
ICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0g
KFtsZWZ0LCByaWdodF0pID0+CiAgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KGxlZnQubG9h
ZFZhbHVlKCkgPj0gcmlnaHQubG9hZFZhbHVlKCkpOwogICAgICAgICAgICAgfSk7Ci0gICAgICAg
IAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIGJvb2wgb3Bl
cmF0b3I+PSh1aW50LHVpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAg
ICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAg
ICAgICAgICAgRVB0ci5ib3gobGVmdC5sb2FkVmFsdWUoKSA+PSByaWdodC5sb2FkVmFsdWUoKSk7
CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAg
ICAgICAgICAgICJuYXRpdmUgYm9vbCBvcGVyYXRvcj49KGZsb2F0LGZsb2F0KSIsCiAgICAgICAg
ICAgICBmdW5jID0+IHsKQEAgLTUzOCw3ICs3MDEsNyBAQCBjbGFzcyBJbnRyaW5zaWNzIHsKICAg
ICAgICAgZm9yIChsZXQgc2V0dGVyIG9mIEJ1aWx0aW5WZWN0b3JTZXR0ZXIuZnVuY3Rpb25zKCkp
CiAgICAgICAgICAgICB0aGlzLl9tYXAuc2V0KHNldHRlci50b1N0cmluZygpLCBmdW5jID0+IHNl
dHRlci5pbnN0YW50aWF0ZUltcGxlbWVudGF0aW9uKGZ1bmMpKTsKICAgICB9Ci0gICAgCisKICAg
ICBhZGQodGhpbmcpCiAgICAgewogICAgICAgICBsZXQgaW50cmluc2ljID0gdGhpcy5fbWFwLmdl
dCh0aGluZy50b1N0cmluZygpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL05hbWVDb250ZXh0LmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmFt
ZUNvbnRleHQuanMKaW5kZXggMWJhYjNmYzU2MDI2MDEwNzdiM2ZhODg1YTYwNTRhYjg2MGIwYTE5
My4uZGM2ODU3OGZmNTU2YjMxMmIwOTI3ZWYzYzBkZmZhMDA2OGYxYmU2MyAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmFtZUNvbnRleHQuanMKKysrIGIvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmFtZUNvbnRleHQuanMKQEAgLTY5LDExICs2OSwzMyBA
QCBjbGFzcyBOYW1lQ29udGV4dCB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAor
ICAgICAgICBpZiAodGhpbmcua2luZCA9PSBUeXBlKSB7CisgICAgICAgICAgICB0aGlzLl9zZXQu
YWRkKHRoaW5nKTsKKyAgICAgICAgICAgIGlmICh0aGluZy5uYW1lID09ICJ2ZWN0b3IiKSB7Cisg
ICAgICAgICAgICAgICAgbGV0IGFycmF5ID0gdGhpcy5fbWFwLmdldCh0aGluZy5uYW1lKTsKKyAg
ICAgICAgICAgICAgICBpZiAoIWFycmF5KSB7CisgICAgICAgICAgICAgICAgICAgIGFycmF5ID0g
W107CisgICAgICAgICAgICAgICAgICAgIGFycmF5LmtpbmQgPSBUeXBlOworICAgICAgICAgICAg
ICAgICAgICB0aGlzLl9tYXAuc2V0KHRoaW5nLm5hbWUsIGFycmF5KTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgaWYgKGFycmF5LmtpbmQgIT0gVHlwZSkKKyAgICAgICAgICAg
ICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3IodGhpbmcub3JpZ2luLm9yaWdpblN0cmluZywg
IkNhbm5vdCByZXVzZSB0eXBlIG5hbWUgZm9yIGZ1bmN0aW9uOiAiICsgdGhpbmcubmFtZSk7Cisg
ICAgICAgICAgICAgICAgYXJyYXkucHVzaCh0aGluZyk7CisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5fbWFwLmhh
cyh0aGluZy5uYW1lKSkKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3Io
dGhpbmcub3JpZ2luLm9yaWdpblN0cmluZywgIkR1cGxpY2F0ZSBuYW1lOiAiICsgdGhpbmcubmFt
ZSk7CisgICAgICAgICAgICAgICAgdGhpcy5fbWFwLnNldCh0aGluZy5uYW1lLCB0aGluZyk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCiAg
ICAgICAgIGlmICh0aGlzLl9tYXAuaGFzKHRoaW5nLm5hbWUpKQogICAgICAgICAgICAgdGhyb3cg
bmV3IFdUeXBlRXJyb3IodGhpbmcub3JpZ2luLm9yaWdpblN0cmluZywgIkR1cGxpY2F0ZSBuYW1l
OiAiICsgdGhpbmcubmFtZSk7CiAKICAgICAgICAgdGhpcy5fc2V0LmFkZCh0aGluZyk7CiAgICAg
ICAgIHRoaXMuX21hcC5zZXQodGhpbmcubmFtZSwgdGhpbmcpOworCiAgICAgfQogICAgIAogICAg
IGdldChraW5kLCBuYW1lKQpAQCAtMTAyLDYgKzEyNCwxMCBAQCBjbGFzcyBOYW1lQ29udGV4dCB7
CiAgICAgICAgICAgICBmb3IgKGxldCBmdW5jIG9mIHRoaW5nKQogICAgICAgICAgICAgICAgIHlp
ZWxkIGZ1bmM7CiAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0gZWxzZSBpZiAodGhpbmcu
a2luZCA9PT0gVHlwZSAmJiAodGhpbmcgaW5zdGFuY2VvZiBBcnJheSkpIHsKKyAgICAgICAgICAg
IGZvciAobGV0IHR5cGUgb2YgdGhpbmcpCisgICAgICAgICAgICAgICAgeWllbGQgdHlwZTsKKyAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICB5aWVsZCB0aGluZzsKICAgICB9
CkBAIC0xNjMsOCArMTg5LDggQEAgY2xhc3MgTmFtZUNvbnRleHQgewogICAgIHsKICAgICAgICAg
Zm9yIChsZXQgdmFsdWUgb2YgdGhpcy5fbWFwLnZhbHVlcygpKSB7CiAgICAgICAgICAgICBpZiAo
dmFsdWUgaW5zdGFuY2VvZiBBcnJheSkgewotICAgICAgICAgICAgICAgIGZvciAobGV0IGZ1bmMg
b2YgdmFsdWUpCi0gICAgICAgICAgICAgICAgICAgIHlpZWxkIGZ1bmM7CisgICAgICAgICAgICAg
ICAgZm9yIChsZXQgdGhpbmcgb2YgdmFsdWUpCisgICAgICAgICAgICAgICAgICAgIHlpZWxkIHRo
aW5nOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgeWllbGQgdmFsdWU7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9OYW1lUmVzb2x2ZXIuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYW1lUmVz
b2x2ZXIuanMKaW5kZXggYTJhZjFkOTMzNDY3MjUxNzI2YzQyN2ZhMDY0YjZkNzRjOTIzNTU3NS4u
ZTcyNDRkODNlYjkxZjY0MGQ2MWM4ZDZkMjFmY2E1NWYwNzkxYmE5ZCAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmFtZVJlc29sdmVyLmpzCisrKyBiL1Rvb2xzL1dl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL05hbWVSZXNvbHZlci5qcwpAQCAtMTIwLDEyICsxMjAsMTYg
QEAgY2xhc3MgTmFtZVJlc29sdmVyIGV4dGVuZHMgVmlzaXRvciB7CiAgICAgCiAgICAgdmlzaXRU
eXBlUmVmKG5vZGUpCiAgICAgeworICAgICAgICBzdXBlci52aXNpdFR5cGVSZWYobm9kZSk7CiAg
ICAgICAgIGxldCB0eXBlID0gbm9kZS50eXBlOwogICAgICAgICBpZiAoIXR5cGUpIHsKICAgICAg
ICAgICAgIHR5cGUgPSB0aGlzLl9uYW1lQ29udGV4dC5nZXQoVHlwZSwgbm9kZS5uYW1lKTsKICAg
ICAgICAgICAgIGlmICghdHlwZSkKICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJv
cihub2RlLm9yaWdpbi5vcmlnaW5TdHJpbmcsICJDb3VsZCBub3QgZmluZCB0eXBlIG5hbWVkICIg
KyBub2RlLm5hbWUpOwotICAgICAgICAgICAgbm9kZS50eXBlID0gdHlwZTsKKyAgICAgICAgICAg
IGlmICh0eXBlIGluc3RhbmNlb2YgQXJyYXkpCisgICAgICAgICAgICAgICAgbm9kZS5wb3NzaWJs
ZU92ZXJsb2FkcyA9IHR5cGU7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbm9k
ZS50eXBlID0gdHlwZTsKICAgICAgICAgfQogICAgIH0KICAgICAKQEAgLTIxMCw5ICsyMTQsNCBA
QCBjbGFzcyBOYW1lUmVzb2x2ZXIgZXh0ZW5kcyBWaXNpdG9yIHsKICAgICAgICAgCiAgICAgICAg
IHN1cGVyLnZpc2l0Q2FsbEV4cHJlc3Npb24obm9kZSk7CiAgICAgfQotCi0gICAgdmlzaXRWZWN0
b3JUeXBlKG5vZGUpCi0gICAgewotICAgICAgICBub2RlLmVsZW1lbnRUeXBlLnZpc2l0KHRoaXMp
OwotICAgIH0KIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05h
dGl2ZVR5cGUuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYXRpdmVUeXBlLmpz
CmluZGV4IGUyZDg1MWNiY2NiYTNhOTcyMzRjN2JkMzkyOTA3ODI5Y2E5ZTA1ZjIuLjIzODFiNWE2
YjBiMDEwZTBmZGQ0ZGM1MzU1MGE4ZWE2YjRmODM0N2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL05hdGl2ZVR5cGUuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvTmF0aXZlVHlwZS5qcwpAQCAtMjUsMTEgKzI1LDE0IEBACiAidXNlIHN0cmlj
dCI7CiAKIGNsYXNzIE5hdGl2ZVR5cGUgZXh0ZW5kcyBUeXBlIHsKLSAgICBjb25zdHJ1Y3Rvcihv
cmlnaW4sIG5hbWUpCisgICAgY29uc3RydWN0b3Iob3JpZ2luLCBuYW1lLCB0eXBlQXJndW1lbnRz
KQogICAgIHsKKyAgICAgICAgaWYgKCEodHlwZUFyZ3VtZW50cyBpbnN0YW5jZW9mIEFycmF5KSkK
KyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigidHlwZSBwYXJhbWV0ZXJzIG5vdCBhcnJheTog
IiArIHR5cGVBcmd1bWVudHMpOwogICAgICAgICBzdXBlcigpOwogICAgICAgICB0aGlzLl9vcmln
aW4gPSBvcmlnaW47CiAgICAgICAgIHRoaXMuX25hbWUgPSBuYW1lOworICAgICAgICB0aGlzLl90
eXBlQXJndW1lbnRzID0gdHlwZUFyZ3VtZW50czsKICAgICAgICAgdGhpcy5faXNOdW1iZXIgPSBm
YWxzZTsKICAgICAgICAgdGhpcy5faXNJbnQgPSBmYWxzZTsKICAgICAgICAgdGhpcy5faXNGbG9h
dGluZyA9IGZhbHNlOwpAQCAtMzgsNiArNDEsNyBAQCBjbGFzcyBOYXRpdmVUeXBlIGV4dGVuZHMg
VHlwZSB7CiAgICAgCiAgICAgZ2V0IG9yaWdpbigpIHsgcmV0dXJuIHRoaXMuX29yaWdpbjsgfQog
ICAgIGdldCBuYW1lKCkgeyByZXR1cm4gdGhpcy5fbmFtZTsgfQorICAgIGdldCB0eXBlQXJndW1l
bnRzKCkgeyByZXR1cm4gdGhpcy5fdHlwZUFyZ3VtZW50czsgfQogICAgIGdldCBpc05hdGl2ZSgp
IHsgcmV0dXJuIHRydWU7IH0KICAgICAKICAgICAvLyBXZSBsZXQgSW50cmluc2ljcy5qcyBzZXQg
dGhlc2UgYXMgaXQgbGlrZXMuCkBAIC01MiwxOSArNTYsMTggQEAgY2xhc3MgTmF0aXZlVHlwZSBl
eHRlbmRzIFR5cGUgewogICAgIAogICAgIHRvU3RyaW5nKCkKICAgICB7Ci0gICAgICAgIHJldHVy
biBgbmF0aXZlIHR5cGVkZWYgJHt0aGlzLm5hbWV9YDsKKyAgICAgICAgbGV0IHJlc3VsdCA9IGBu
YXRpdmUgdHlwZWRlZiAke3RoaXMubmFtZX1gOworICAgICAgICBpZiAodGhpcy50eXBlQXJndW1l
bnRzLmxlbmd0aCkKKyAgICAgICAgICAgIHJlc3VsdCArPSAiPCIgKyB0aGlzLnR5cGVBcmd1bWVu
dHMuam9pbigiLCIpICsgIj4iOworICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAK
ICAgICBzdGF0aWMgY3JlYXRlKG9yaWdpbiwgbmFtZSwgdHlwZUFyZ3VtZW50cykKICAgICB7Ci0g
ICAgICAgIC8vIEZJWE1FOiBGb3IgbmF0aXZlIHR5cGVzIGxpa2UgVGV4dHVyZTFEIHRoaXMgc2hv
dWxkIHJlc29sdmUgdGhlIHR5cGUgdG8gc29tZXRoaW5nIGNvbmNyZXRlIGJ5IGNoYW5naW5nIHRo
ZSB0eXBlIG5hbWUuCi0gICAgICAgIGlmICh0eXBlQXJndW1lbnRzLmxlbmd0aCkKLSAgICAgICAg
ICAgIHRocm93IG5ldyBXVHlwZUVycm9yKG9yaWdpbi5vcmlnaW5TdHJpbmcsIGAke25hbWV9PCR7
dHlwZUFyZ3VtZW50cy5qb2luKCIsIil9PjogU3VwcG9ydCBmb3IgbmF0aXZlIHR5cGVzIHdpdGgg
dHlwZSBhcmd1bWVudHMgaXMgY3VycmVudGx5IHVuaW1wbGVtZW50ZWQuYCk7CisgICAgICAgIGlm
IChuYW1lID09ICJ2ZWN0b3IiKQorICAgICAgICAgICAgcmV0dXJuIG5ldyBWZWN0b3JUeXBlKG9y
aWdpbiwgbmFtZSwgdHlwZUFyZ3VtZW50cyk7CiAKLSAgICAgICAgaWYgKGFsbFZlY3RvclR5cGVO
YW1lcygpLmluZGV4T2YobmFtZSkgPiAtMSkKLSAgICAgICAgICAgIHJldHVybiBuZXcgVmVjdG9y
VHlwZShvcmlnaW4sIG5hbWUpOwotCi0gICAgICAgIHJldHVybiBuZXcgTmF0aXZlVHlwZShvcmln
aW4sIG5hbWUpOworICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZVR5cGUob3JpZ2luLCBuYW1lLCB0
eXBlQXJndW1lbnRzKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL1BhcnNlLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFy
c2UuanMKaW5kZXggYzRhZTlkZTdmZGU4NTYyOTY5MjYwYzE0NjljMjJiNTg2ZGU3NmRmOS4uOWEy
YjIwMTVmZDM1MjRiZWE5ZDYwNGM1MTFjMjdlZmVmNmNjNTZlOSAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFyc2UuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvUGFyc2UuanMKQEAgLTMyNywxMCArMzI3LDEyIEBAIGZ1bmN0aW9uIHBhcnNl
KHByb2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwgbGluZU51bWJlck9mZnNldCwgdGV4dCkKICAg
ICBmdW5jdGlvbiBpc0NhbGxFeHByZXNzaW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiBsZXhl
ci50ZXN0U2NvcGUoKCkgPT4gewotICAgICAgICAgICAgY29uc3VtZUtpbmQoImlkZW50aWZpZXIi
KTsKLSAgICAgICAgICAgIHBhcnNlVHlwZUFyZ3VtZW50cygpOwotICAgICAgICAgICAgY29uc3Vt
ZSgiKCIpOwotICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBjb25zdW1lS2luZCgiaWRlbnRp
ZmllciIpOworICAgICAgICAgICAgICAgIGNvbnN1bWUoIigiKTsKKyAgICAgICAgICAgIH0pIHx8
IGxleGVyLnRlc3RTY29wZSgoKSA9PiB7CisgICAgICAgICAgICAgICAgcGFyc2VUeXBlKCk7Cisg
ICAgICAgICAgICAgICAgY29uc3VtZSgiKCIpOworICAgICAgICAgICAgfSk7CiAgICAgfQogICAg
IAogICAgIGZ1bmN0aW9uIGVtaXRJbmNyZW1lbnQodG9rZW4sIG9sZCwgZXh0cmFBcmcpCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QcmVwYXJlLmpzIGIvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUHJlcGFyZS5qcwppbmRleCA3YjE2MTM5ZTk1YjgxZTJl
OGRhODM1NGJkOGMxNzliMTkwYmFlZmEwLi5lZDBiNTNlN2I0NzEzOTBmNDk0NDdhN2Q3MmQzNmE4
YzE2MTJiMGRhIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QcmVw
YXJlLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1ByZXBhcmUuanMKQEAg
LTQwLDIwICs0MCwzMiBAQCBsZXQgcHJlcGFyZSA9ICgoKSA9PiB7CiAgICAgICAgIH0KICAgICAg
ICAgCiAgICAgICAgIGZvbGRDb25zdGV4cHJzKHByb2dyYW0pOwotICAgICAgICByZW1vdmVUeXBl
QXJndW1lbnRzKHByb2dyYW0pOwogCisgICAgICAgIGNoZWNrVHlwZXNXaXRoQXJndW1lbnRzKHBy
b2dyYW0pOwogICAgICAgICBsZXQgbmFtZVJlc29sdmVyID0gY3JlYXRlTmFtZVJlc29sdmVyKHBy
b2dyYW0pOworICAgICAgICBjaGVja1R5cGVzV2l0aEFyZ3VtZW50cyhwcm9ncmFtKTsKICAgICAg
ICAgcmVzb2x2ZU5hbWVzSW5UeXBlcyhwcm9ncmFtLCBuYW1lUmVzb2x2ZXIpOworICAgICAgICBj
aGVja1R5cGVzV2l0aEFyZ3VtZW50cyhwcm9ncmFtKTsKICAgICAgICAgcmVzb2x2ZVR5cGVEZWZz
SW5UeXBlcyhwcm9ncmFtKTsKKyAgICAgICAgY2hlY2tUeXBlc1dpdGhBcmd1bWVudHMocHJvZ3Jh
bSk7CiAgICAgICAgIGNoZWNrUmVjdXJzaXZlVHlwZXMocHJvZ3JhbSk7CisgICAgICAgIGNoZWNr
VHlwZXNXaXRoQXJndW1lbnRzKHByb2dyYW0pOwogICAgICAgICBzeW50aGVzaXplU3RydWN0QWNj
ZXNzb3JzKHByb2dyYW0pOworICAgICAgICBjaGVja1R5cGVzV2l0aEFyZ3VtZW50cyhwcm9ncmFt
KTsKICAgICAgICAgc3ludGhlc2l6ZU9wZXJhdG9yQm9vbChwcm9ncmFtKTsKKyAgICAgICAgY2hl
Y2tUeXBlc1dpdGhBcmd1bWVudHMocHJvZ3JhbSk7CiAgICAgICAgIHN5bnRoZXNpemVFbnVtRnVu
Y3Rpb25zKHByb2dyYW0pOworICAgICAgICBjaGVja1R5cGVzV2l0aEFyZ3VtZW50cyhwcm9ncmFt
KTsKICAgICAgICAgc3ludGhlc2l6ZUFycmF5T3BlcmF0b3JMZW5ndGgocHJvZ3JhbSk7CisgICAg
ICAgIGNoZWNrVHlwZXNXaXRoQXJndW1lbnRzKHByb2dyYW0pOwogICAgICAgICBzeW50aGVzaXpl
Q29weUNvbnN0cnVjdG9yT3BlcmF0b3IocHJvZ3JhbSk7CisgICAgICAgIGNoZWNrVHlwZXNXaXRo
QXJndW1lbnRzKHByb2dyYW0pOwogICAgICAgICBzeW50aGVzaXplRGVmYXVsdENvbnN0cnVjdG9y
T3BlcmF0b3IocHJvZ3JhbSk7CisgICAgICAgIGNoZWNrVHlwZXNXaXRoQXJndW1lbnRzKHByb2dy
YW0pOwogICAgICAgICByZXNvbHZlTmFtZXNJbkZ1bmN0aW9ucyhwcm9ncmFtLCBuYW1lUmVzb2x2
ZXIpOworICAgICAgICBjaGVja1R5cGVzV2l0aEFyZ3VtZW50cyhwcm9ncmFtKTsKICAgICAgICAg
cmVzb2x2ZVR5cGVEZWZzSW5GdW5jdGlvbnMocHJvZ3JhbSk7CisgICAgICAgIGNoZWNrVHlwZXNX
aXRoQXJndW1lbnRzKHByb2dyYW0pOwogICAgICAgICAKICAgICAgICAgY2hlY2socHJvZ3JhbSk7
CiAgICAgICAgIGNoZWNrTGl0ZXJhbFR5cGVzKHByb2dyYW0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUHJvZ3JhbS5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL1Byb2dyYW0uanMKaW5kZXggMDY2MjVkOThmYzQxZTc0YzkzZGVjZTgwYjcwY2U1
NWM3YWY3NGRkNS4uMTExNmM0ZjU3NzU2MjIxNWZkZDc0MjhhMzE3NTc5YTkyOTE2NTQxNCAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUHJvZ3JhbS5qcworKysgYi9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9Qcm9ncmFtLmpzCkBAIC00OCwxOSArNDgsMjUg
QEAgY2xhc3MgUHJvZ3JhbSBleHRlbmRzIE5vZGUgewogICAgICAgICBpZiAoc3RhdGVtZW50IGlu
c3RhbmNlb2YgRnVuYykgewogICAgICAgICAgICAgbGV0IGFycmF5ID0gdGhpcy5fZnVuY3Rpb25z
LmdldChzdGF0ZW1lbnQubmFtZSk7CiAgICAgICAgICAgICBpZiAoIWFycmF5KQotICAgICAgICAg
ICAgICAgIHRoaXMuX2Z1bmN0aW9ucy5zZXQoc3RhdGVtZW50Lm5hbWUsIGFycmF5ID0gW10pOwor
ICAgICAgICAgICAgICAgIHRoaXMuZnVuY3Rpb25zLnNldChzdGF0ZW1lbnQubmFtZSwgYXJyYXkg
PSBbXSk7CiAgICAgICAgICAgICBhcnJheS5wdXNoKHN0YXRlbWVudCk7Ci0gICAgICAgIH0gZWxz
ZSBpZiAoc3RhdGVtZW50IGluc3RhbmNlb2YgVHlwZSkKLSAgICAgICAgICAgIHRoaXMuX3R5cGVz
LnNldChzdGF0ZW1lbnQubmFtZSwgc3RhdGVtZW50KTsKLSAgICAgICAgZWxzZQorICAgICAgICB9
IGVsc2UgaWYgKHN0YXRlbWVudCBpbnN0YW5jZW9mIFR5cGUpIHsKKyAgICAgICAgICAgIGlmIChz
dGF0ZW1lbnQuaXNOYXRpdmUgJiYgc3RhdGVtZW50Lm5hbWUgPT0gInZlY3RvciIpIHsKKyAgICAg
ICAgICAgICAgICBsZXQgYXJyYXkgPSB0aGlzLnR5cGVzLmdldChzdGF0ZW1lbnQubmFtZSk7Cisg
ICAgICAgICAgICAgICAgaWYgKCFhcnJheSkKKyAgICAgICAgICAgICAgICAgICAgdGhpcy50eXBl
cy5zZXQoc3RhdGVtZW50Lm5hbWUsIGFycmF5ID0gW10pOworICAgICAgICAgICAgICAgIGFycmF5
LnB1c2goc3RhdGVtZW50KTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHRo
aXMudHlwZXMuc2V0KHN0YXRlbWVudC5uYW1lLCBzdGF0ZW1lbnQpOworICAgICAgICB9IGVsc2UK
ICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiU3RhdGVtZW50IGlzIG5vdCBhIGZ1bmN0aW9u
IG9yIHR5cGU6ICIgKyBzdGF0ZW1lbnQpOwotICAgICAgICB0aGlzLl90b3BMZXZlbFN0YXRlbWVu
dHMucHVzaChzdGF0ZW1lbnQpOwotICAgICAgICB0aGlzLl9nbG9iYWxOYW1lQ29udGV4dC5hZGQo
c3RhdGVtZW50KTsKKyAgICAgICAgdGhpcy50b3BMZXZlbFN0YXRlbWVudHMucHVzaChzdGF0ZW1l
bnQpOworICAgICAgICB0aGlzLmdsb2JhbE5hbWVDb250ZXh0LmFkZChzdGF0ZW1lbnQpOwogICAg
IH0KICAgICAKICAgICB0b1N0cmluZygpCiAgICAgewotICAgICAgICBpZiAoIXRoaXMuX3RvcExl
dmVsU3RhdGVtZW50cy5sZW5ndGgpCisgICAgICAgIGlmICghdGhpcy50b3BMZXZlbFN0YXRlbWVu
dHMubGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuICIiOwogICAgICAgICByZXR1cm4gdGhpcy5f
dG9wTGV2ZWxTdGF0ZW1lbnRzLmpvaW4oIjsiKSArICI7IjsKICAgICB9CmRpZmYgLS1naXQgYS9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZWN1cnNpdmVUeXBlQ2hlY2tlci5qcyBiL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1JlY3Vyc2l2ZVR5cGVDaGVja2VyLmpzCmluZGV4
IDkxZjc2NzQyZjYwZDE0YTM3ZTZlNjA2YzNhYjJmOWMyYzhmYWIxMTYuLmRlM2Q1MjRiYzU0ODhj
ODcwNWZlYThmNjdiYWQ4N2JlY2JiOTdkZGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL1JlY3Vyc2l2ZVR5cGVDaGVja2VyLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL1JlY3Vyc2l2ZVR5cGVDaGVja2VyLmpzCkBAIC01MSw3ICs1MSwxMSBA
QCBjbGFzcyBSZWN1cnNpdmVUeXBlQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogICAgIHZpc2l0
VHlwZVJlZihub2RlKQogICAgIHsKICAgICAgICAgc3VwZXIudmlzaXRUeXBlUmVmKG5vZGUpOwot
ICAgICAgICBub2RlLnR5cGUudmlzaXQodGhpcyk7CisgICAgICAgIGlmIChub2RlLnBvc3NpYmxl
T3ZlcmxvYWRzKSB7CisgICAgICAgICAgICBmb3IgKGxldCBvdmVybG9hZCBvZiBub2RlLnBvc3Np
YmxlT3ZlcmxvYWRzKQorICAgICAgICAgICAgICAgIG92ZXJsb2FkLnZpc2l0KHRoaXMpOworICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgIG5vZGUudHlwZS52aXNpdCh0aGlzKTsKICAgICB9CiB9
CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1JlbW92ZVR5cGVB
cmd1bWVudHMuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZW1vdmVUeXBlQXJn
dW1lbnRzLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZjkwODcwMzJlODUwZmUw
ZGY0NWZkN2Q3ZDhmYmFmMzM0ZmEwMGJjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1JlbW92ZVR5cGVB
cmd1bWVudHMuanMKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLSJ1c2Ugc3RyaWN0IjsKLQotZnVuY3Rpb24g
cmVtb3ZlVHlwZUFyZ3VtZW50cyhwcm9ncmFtKQotewotICAgIGNsYXNzIFJlbW92ZVR5cGVBcmd1
bWVudHMgZXh0ZW5kcyBWaXNpdG9yIHsKLSAgICAgICAgc3RhdGljIHJlc29sdmVOYW1lQW5kQXJn
dW1lbnRzKG5vZGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbm9kZS50eXBlQXJndW1l
bnRzKQotICAgICAgICAgICAgICAgIHJldHVybiBub2RlLm5hbWU7Ci0KLSAgICAgICAgICAgIHN3
aXRjaCAobm9kZS5uYW1lKSB7Ci0gICAgICAgICAgICBjYXNlICJ2ZWN0b3IiOgotICAgICAgICAg
ICAgICAgIGlmIChub2RlLnR5cGVBcmd1bWVudHMubGVuZ3RoICE9IDIpCi0gICAgICAgICAgICAg
ICAgICAgIHRocm93IG5ldyBXU3ludGF4RXJyb3Iobm9kZS5vcmlnaW5TdHJpbmcsIGAke25vZGUu
bmFtZX0gc2hvdWxkIGhhdmUgMiB0eXBlIGFyZ3VtZW50cywgZ290ICR7bm9kZS50eXBlQXJndW1l
bnRzLmxlbmd0aH0uYCk7Ci0KLSAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50VHlwZU5hbWUg
PSBub2RlLnR5cGVBcmd1bWVudHNbMF0ubmFtZTsKLSAgICAgICAgICAgICAgICBjb25zdCBsZW5n
dGhWYWx1ZSA9IG5vZGUudHlwZUFyZ3VtZW50c1sxXS52YWx1ZTsKLQotICAgICAgICAgICAgICAg
IGlmIChWZWN0b3JFbGVtZW50VHlwZXMuaW5kZXhPZihlbGVtZW50VHlwZU5hbWUpIDwgMCkKLSAg
ICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFdTeW50YXhFcnJvcihub2RlLm9yaWdpblN0cmlu
ZywgYCR7ZWxlbWVudFR5cGVOYW1lfSBpcyBub3QgYSB2YWxpZCB2ZWN0b3IgZWxlbWVudCB0eXBl
LmApOwotICAgICAgICAgICAgICAgIGlmIChWZWN0b3JFbGVtZW50U2l6ZXMuaW5kZXhPZihsZW5n
dGhWYWx1ZSkgPCAwKQotICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV1N5bnRheEVycm9y
KG5vZGUub3JpZ2luU3RyaW5nLCBgJHtsZW5ndGhWYWx1ZX0gaXMgbm90IGEgdmFsaWQgc2l6ZSBm
b3IgdmVjdG9ycyB3aXRoIGVsZW1lbnQgdHlwZSAke2VsZW1lbnRUeXBlTmFtZX0uYCk7Ci0KLSAg
ICAgICAgICAgICAgICByZXR1cm4gYCR7ZWxlbWVudFR5cGVOYW1lfSR7bGVuZ3RoVmFsdWV9YDsK
LSAgICAgICAgICAgIC8vIEZJWE1FOiBGdXJ0aGVyIGNhc2VzIGZvciBtYXRyaWNlcywgdGV4dHVy
ZXMsIGV0Yy4KLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgaWYgKG5vZGUu
dHlwZUFyZ3VtZW50cy5sZW5ndGgpCi0gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBXU3lu
dGF4RXJyb3IoYCR7bm9kZS5uYW1lfSR7YXJndW1lbnRzLmpvaW4oIiwgIil9IGlzIG5vdCBhIHBl
cm1pdHRlZCBnZW5lcmljIHR5cGUgb3IgZnVuY3Rpb25gKTsKLSAgICAgICAgICAgICAgICByZXR1
cm4gbm9kZS5uYW1lOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgdmlzaXRU
eXBlUmVmKG5vZGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5vZGUuX25hbWUgPSBSZW1vdmVU
eXBlQXJndW1lbnRzLnJlc29sdmVOYW1lQW5kQXJndW1lbnRzKG5vZGUpOwotICAgICAgICAgICAg
bm9kZS5fdHlwZUFyZ3VtZW50cyA9IG51bGw7Ci0gICAgICAgIH0KLQotICAgICAgICB2aXNpdENh
bGxFeHByZXNzaW9uKG5vZGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5vZGUuX25hbWUgPSBS
ZW1vdmVUeXBlQXJndW1lbnRzLnJlc29sdmVOYW1lQW5kQXJndW1lbnRzKG5vZGUpOwotICAgICAg
ICAgICAgaWYgKCFub2RlLl9uYW1lIHx8ICFub2RlLl9uYW1lLmxlbmd0aCkKLSAgICAgICAgICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoImxhenkiKTsKLSAgICAgICAgICAgIG5vZGUuX3R5cGVBcmd1
bWVudHMgPSBudWxsOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHJvZ3JhbS52aXNpdChuZXcg
UmVtb3ZlVHlwZUFyZ3VtZW50cygpKTsKLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXNvbHZlTmFtZXMuanMg
Yi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXNvbHZlTmFtZXMuanMKaW5kZXggMmU0
MDJjOGQ2YzBhMzYwOTg1NjFlMDI3NWVlNTNlNzc4ZmQzODRiOC4uYjhiNTMzNDI0NTlhZTgzOWFj
ZjdmMDdjMmJiYWVhOTZlOGE1NGNkZiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvUmVzb2x2ZU5hbWVzLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL1Jlc29sdmVOYW1lcy5qcwpAQCAtMzEsOCArMzEsMTMgQEAgZnVuY3Rpb24gY3JlYXRlTmFt
ZVJlc29sdmVyKHByb2dyYW0pCiAKIGZ1bmN0aW9uIHJlc29sdmVOYW1lc0luVHlwZXMocHJvZ3Jh
bSwgbmFtZVJlc29sdmVyKQogewotICAgIGZvciAobGV0IHR5cGUgb2YgcHJvZ3JhbS50eXBlcy52
YWx1ZXMoKSkKLSAgICAgICAgbmFtZVJlc29sdmVyLmRvU3RhdGVtZW50KHR5cGUpOworICAgIGZv
ciAobGV0IHR5cGUgb2YgcHJvZ3JhbS50eXBlcy52YWx1ZXMoKSkgeworICAgICAgICBpZiAodHlw
ZSBpbnN0YW5jZW9mIEFycmF5KSB7CisgICAgICAgICAgICBmb3IgKGxldCBjb25zdGl0dWVudFR5
cGUgb2YgdHlwZSkKKyAgICAgICAgICAgICAgICBuYW1lUmVzb2x2ZXIuZG9TdGF0ZW1lbnQoY29u
c3RpdHVlbnRUeXBlKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBuYW1lUmVzb2x2ZXIu
ZG9TdGF0ZW1lbnQodHlwZSk7CisgICAgfQogfQogCiBmdW5jdGlvbiByZXNvbHZlTmFtZXNJbkZ1
bmN0aW9ucyhwcm9ncmFtLCBuYW1lUmVzb2x2ZXIpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9SZXNvbHZlT3ZlcmxvYWRJbXBsLmpzIGIvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvUmVzb2x2ZU92ZXJsb2FkSW1wbC5qcwppbmRleCBkMGYxZTM0ZDYxN2Vh
MjcyNjY0NjdjMTYxNzA3MTU0NjY0YTQ0OWFkLi43YTA5N2JjYTQ3MGVjYjU2YTZlZTNkZWY1MmFh
ZjVmNzhiNTA2NTExIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9S
ZXNvbHZlT3ZlcmxvYWRJbXBsLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L1Jlc29sdmVPdmVybG9hZEltcGwuanMKQEAgLTEwMCwzICsxMDAsMjggQEAgZnVuY3Rpb24gcmVz
b2x2ZU92ZXJsb2FkSW1wbChmdW5jdGlvbnMsIGFyZ3VtZW50VHlwZXMsIHJldHVyblR5cGUsIGFs
bG93RW50cnlQb2kKICAgICAKICAgICByZXR1cm4ge2ZhaWx1cmVzOiBhbWJpZ3VpdHlMaXN0Lm1h
cChvdmVybG9hZCA9PiBuZXcgT3ZlcmxvYWRSZXNvbHV0aW9uRmFpbHVyZShvdmVybG9hZC5mdW5j
LCBtZXNzYWdlKSl9OwogfQorCitmdW5jdGlvbiByZXNvbHZlVHlwZU92ZXJsb2FkSW1wbCh0eXBl
cywgdHlwZUFyZ3VtZW50cykKK3sKKyAgICBpZiAoIXR5cGVzKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoIk51bGwgdHlwZXM7IHRoYXQgc2hvdWxkIGhhdmUgYmVlbiBjYXVnaHQgYnkgdGhlIGNh
bGxlci4iKTsKKworICAgIGxldCBmYWlsdXJlcyA9IFtdOworICAgIGxldCBzdWNjZXNzZXMgPSBb
XTsKKyAgICBmb3IgKGxldCB0eXBlIG9mIHR5cGVzKSB7CisgICAgICAgIGxldCBvdmVybG9hZCA9
IGluZmVyVHlwZXNGb3JUeXBlQXJndW1lbnRzKHR5cGUsIHR5cGVBcmd1bWVudHMpOworICAgICAg
ICBpZiAob3ZlcmxvYWQuZmFpbHVyZSkKKyAgICAgICAgICAgIGZhaWx1cmVzLnB1c2gob3Zlcmxv
YWQuZmFpbHVyZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHN1Y2Nlc3Nlcy5wdXNoKG92
ZXJsb2FkKTsKKyAgICB9CisgICAgCisgICAgaWYgKCFzdWNjZXNzZXMubGVuZ3RoKQorICAgICAg
ICByZXR1cm4ge2ZhaWx1cmVzOiBmYWlsdXJlc307CisgICAgCisgICAgaWYgKHN1Y2Nlc3Nlcy5s
ZW5ndGggPT0gMSkKKyAgICAgICAgcmV0dXJuIHN1Y2Nlc3Nlc1swXTsKKyAgICAKKyAgICBsZXQg
bWVzc2FnZSA9ICJBbWJpZ3VvdXMgb3ZlcmxvYWQgLSB0eXBlcyBtdXR1YWxseSBhcHBsaWNhYmxl
IjsKKyAgICByZXR1cm4ge2ZhaWx1cmVzOiBzdWNjZXNzZXMubWFwKG92ZXJsb2FkID0+IG5ldyBU
eXBlT3ZlcmxvYWRSZXNvbHV0aW9uRmFpbHVyZShvdmVybG9hZC50eXBlLCBtZXNzYWdlKSl9Owor
fQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmVzb2x2ZVR5cGVE
ZWZzLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmVzb2x2ZVR5cGVEZWZzLmpz
CmluZGV4IDkxNDNmOGUxZTAwYTA0OTgxNGI5MGEzNDVjNWFmNDUxNDU5ZDg1NzQuLjA1NzRiZWNk
NTUzMTUwOTQ3OGEyZGVmZGMyZmU3YzY4ZTYxYzNkMzUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL1Jlc29sdmVUeXBlRGVmcy5qcworKysgYi9Ub29scy9XZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9SZXNvbHZlVHlwZURlZnMuanMKQEAgLTI3LDggKzI3LDEzIEBACiBm
dW5jdGlvbiByZXNvbHZlVHlwZURlZnNJblR5cGVzKHByb2dyYW0pCiB7CiAgICAgbGV0IHJlc29s
dmVyID0gbmV3IFR5cGVEZWZSZXNvbHZlcigpOwotICAgIGZvciAobGV0IHR5cGUgb2YgcHJvZ3Jh
bS50eXBlcy52YWx1ZXMoKSkKLSAgICAgICAgdHlwZS52aXNpdChyZXNvbHZlcik7CisgICAgZm9y
IChsZXQgdHlwZSBvZiBwcm9ncmFtLnR5cGVzLnZhbHVlcygpKSB7CisgICAgICAgIGlmICh0eXBl
IGluc3RhbmNlb2YgQXJyYXkpIHsKKyAgICAgICAgICAgIGZvciAobGV0IGNvbnN0aXR1ZW50VHlw
ZSBvZiB0eXBlKQorICAgICAgICAgICAgICAgIGNvbnN0aXR1ZW50VHlwZS52aXNpdChyZXNvbHZl
cik7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgdHlwZS52aXNpdChyZXNvbHZlcik7Cisg
ICAgfQogfQogCiBmdW5jdGlvbiByZXNvbHZlVHlwZURlZnNJbkZ1bmN0aW9ucyhwcm9ncmFtKQpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmV3cml0ZXIuanMgYi9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXdyaXRlci5qcwppbmRleCBiNTZjZDYwYmY2
ZmMyNjM2ZGRkNDM0MTI1MmE0NmFhMzI0ZmI0OTZkLi5mMTc3YWQwZjhhM2Q3YzIyMThjODYwMTZk
MGVhNWZjNzFhM2ZhMTY4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9SZXdyaXRlci5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXdyaXRl
ci5qcwpAQCAtOTcsNyArOTcsOSBAQCBjbGFzcyBSZXdyaXRlciB7CiAgICAgCiAgICAgdmlzaXRU
eXBlUmVmKG5vZGUpCiAgICAgewotICAgICAgICBsZXQgcmVzdWx0ID0gbmV3IFR5cGVSZWYobm9k
ZS5vcmlnaW4sIG5vZGUubmFtZSk7CisgICAgICAgIGxldCByZXN1bHQgPSBuZXcgVHlwZVJlZihu
b2RlLm9yaWdpbiwgbm9kZS5uYW1lLCBub2RlLnR5cGVBcmd1bWVudHMubWFwKGFyZ3VtZW50ID0+
IGFyZ3VtZW50LnZpc2l0KHRoaXMpKSk7CisgICAgICAgIGlmIChub2RlLnBvc3NpYmxlT3Zlcmxv
YWRzKQorICAgICAgICAgICAgcmVzdWx0LnBvc3NpYmxlT3ZlcmxvYWRzID0gbm9kZS5wb3NzaWJs
ZU92ZXJsb2Fkcy5tYXAob3ZlcmxvYWQgPT4gTm9kZS52aXNpdChvdmVybG9hZCwgdGhpcykpOwog
ICAgICAgICBpZiAobm9kZS50eXBlKQogICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBOb2RlLnZp
c2l0KG5vZGUudHlwZSwgdGhpcyk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC0zODIsNyAr
Mzg0LDcgQEAgY2xhc3MgUmV3cml0ZXIgewogCiAgICAgdmlzaXRWZWN0b3JUeXBlKG5vZGUpCiAg
ICAgewotICAgICAgICBjb25zdCB2ZWNUeXBlID0gbmV3IFZlY3RvclR5cGUobm9kZS5vcmlnaW4s
IG5vZGUubmFtZSk7CisgICAgICAgIGNvbnN0IHZlY1R5cGUgPSBuZXcgVmVjdG9yVHlwZShub2Rl
Lm9yaWdpbiwgbm9kZS5uYW1lLCBub2RlLnR5cGVBcmd1bWVudHMubWFwKGFyZ3VtZW50ID0+IGFy
Z3VtZW50LnZpc2l0KHRoaXMpKSk7CiAgICAgICAgIHZlY1R5cGUuX2VsZW1lbnRUeXBlID0gbm9k
ZS5lbGVtZW50VHlwZS52aXNpdCh0aGlzKTsKICAgICAgICAgcmV0dXJuIHZlY1R5cGU7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU1BJUlYuaHRtbCBi
L1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1NQSVJWLmh0bWwKaW5kZXggYzdiMzk0MGYy
YjExYmQ4OTYxNGYxNGE5YjUyYzQ3YTU2MTY2YWIxNC4uMjBiZTdjODRjOWFmOTcwZjEzZDE1NGUy
ZTQ0Y2QzNDlkYjNjNzQ4MSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvU1BJUlYuaHRtbAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TUElSVi5o
dG1sCkBAIC00Myw2ICs0Myw3IEBAIHRkIHsKICAgICA8c2NyaXB0IHNyYz0iQ2hlY2tSZWN1cnNp
b24uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDaGVja1JlY3Vyc2l2ZVR5cGVzLmpz
Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ2hlY2tSZXR1cm5zLmpzIj48L3NjcmlwdD4K
KyAgICA8c2NyaXB0IHNyYz0iQ2hlY2tUeXBlc1dpdGhBcmd1bWVudHMuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgc3JjPSJDaGVja1VucmVhY2hhYmxlQ29kZS5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCBzcmM9IkNoZWNrV3JhcHBlZC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
IkNoZWNrZXIuanMiPjwvc2NyaXB0PgpAQCAtMTE2LDcgKzExNyw2IEBAIHRkIHsKICAgICA8c2Ny
aXB0IHNyYz0iUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCBzcmM9IlJlY3Vyc2lvbkNoZWNrZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3Jj
PSJSZWN1cnNpdmVUeXBlQ2hlY2tlci5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9IlJl
bW92ZVR5cGVBcmd1bWVudHMuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJSZXNvbHZl
TmFtZXMuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJSZXNvbHZlT3ZlcmxvYWRJbXBs
LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iUmVzb2x2ZVByb3BlcnRpZXMuanMiPjwv
c2NyaXB0PgpAQCAtMTQwLDYgKzE0MCw3IEBAIHRkIHsKICAgICA8c2NyaXB0IHNyYz0iVHlwZURl
Zi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlR5cGVEZWZSZXNvbHZlci5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlR5cGVSZWYuanMiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQgc3JjPSJUeXBlT3ZlcmxvYWRSZXNvbHV0aW9uRmFpbHVyZS5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCBzcmM9IlR5cGVkVmFsdWUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJV
aW50TGl0ZXJhbC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlVpbnRMaXRlcmFsVHlw
ZS5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9TdGFuZGFyZExpYnJhcnkuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TdGFu
ZGFyZExpYnJhcnkuanMKaW5kZXggMDZiMjUxY2YwYTI0ODE5Y2FiNTA2NWVmNTQ0NWUxNDg5ZDVl
YWFmYy4uODE5MGE0MzU2OTIzYTYxZTU0ODViZGQ0ZjE4MGQxMzgzNzc0ODk4YiAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhbmRhcmRMaWJyYXJ5LmpzCisrKyBi
L1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0YW5kYXJkTGlicmFyeS5qcwpAQCAtMzMs
MTcgKzMzLDcwIEBAIGxldCBzdGFuZGFyZExpYnJhcnkgPSBgCiBuYXRpdmUgdHlwZWRlZiB2b2lk
OwogbmF0aXZlIHR5cGVkZWYgYm9vbDsKIG5hdGl2ZSB0eXBlZGVmIHVjaGFyOworbmF0aXZlIHR5
cGVkZWYgdXNob3J0OwogbmF0aXZlIHR5cGVkZWYgdWludDsKK25hdGl2ZSB0eXBlZGVmIGNoYXI7
CituYXRpdmUgdHlwZWRlZiBzaG9ydDsKIG5hdGl2ZSB0eXBlZGVmIGludDsKK25hdGl2ZSB0eXBl
ZGVmIGhhbGY7CiBuYXRpdmUgdHlwZWRlZiBmbG9hdDsKLQotLy8gRklYTUU6IEFkZCBzdXBwb3J0
IGZvciB0aGVzZSB0eXBlcyB0byBJbnRyaW5zaWNzLmpzCi0vLyBuYXRpdmUgdHlwZWRlZiB1c2hv
cnQ7Ci0vLyBuYXRpdmUgdHlwZWRlZiBjaGFyOwotLy8gbmF0aXZlIHR5cGVkZWYgc2hvcnQ7Ci0v
LyBuYXRpdmUgdHlwZWRlZiBoYWxmOwotLy8gbmF0aXZlIHR5cGVkZWYgYXRvbWljX2ludDsKLS8v
IG5hdGl2ZSB0eXBlZGVmIGF0b21pY191aW50OworbmF0aXZlIHR5cGVkZWYgYXRvbWljX2ludDsK
K25hdGl2ZSB0eXBlZGVmIGF0b21pY191aW50OworCituYXRpdmUgdHlwZWRlZiB2ZWN0b3I8Ym9v
bCwgMj47Cit0eXBlZGVmIGJvb2wyID0gdmVjdG9yPGJvb2wsIDI+OworbmF0aXZlIHR5cGVkZWYg
dmVjdG9yPGJvb2wsIDM+OwordHlwZWRlZiBib29sMyA9IHZlY3Rvcjxib29sLCAzPjsKK25hdGl2
ZSB0eXBlZGVmIHZlY3Rvcjxib29sLCA0PjsKK3R5cGVkZWYgYm9vbDQgPSB2ZWN0b3I8Ym9vbCwg
ND47CituYXRpdmUgdHlwZWRlZiB2ZWN0b3I8dWNoYXIsIDI+OwordHlwZWRlZiB1Y2hhcjIgPSB2
ZWN0b3I8dWNoYXIsIDI+OworbmF0aXZlIHR5cGVkZWYgdmVjdG9yPHVjaGFyLCAzPjsKK3R5cGVk
ZWYgdWNoYXIzID0gdmVjdG9yPHVjaGFyLCAzPjsKK25hdGl2ZSB0eXBlZGVmIHZlY3Rvcjx1Y2hh
ciwgND47Cit0eXBlZGVmIHVjaGFyNCA9IHZlY3Rvcjx1Y2hhciwgND47CituYXRpdmUgdHlwZWRl
ZiB2ZWN0b3I8dXNob3J0LCAyPjsKK3R5cGVkZWYgdXNob3J0MiA9IHZlY3Rvcjx1c2hvcnQsIDI+
OworbmF0aXZlIHR5cGVkZWYgdmVjdG9yPHVzaG9ydCwgMz47Cit0eXBlZGVmIHVzaG9ydDMgPSB2
ZWN0b3I8dXNob3J0LCAzPjsKK25hdGl2ZSB0eXBlZGVmIHZlY3Rvcjx1c2hvcnQsIDQ+OwordHlw
ZWRlZiB1c2hvcnQ0ID0gdmVjdG9yPHVzaG9ydCwgND47CituYXRpdmUgdHlwZWRlZiB2ZWN0b3I8
dWludCwgMj47Cit0eXBlZGVmIHVpbnQyID0gdmVjdG9yPHVpbnQsIDI+OworbmF0aXZlIHR5cGVk
ZWYgdmVjdG9yPHVpbnQsIDM+OwordHlwZWRlZiB1aW50MyA9IHZlY3Rvcjx1aW50LCAzPjsKK25h
dGl2ZSB0eXBlZGVmIHZlY3Rvcjx1aW50LCA0PjsKK3R5cGVkZWYgdWludDQgPSB2ZWN0b3I8dWlu
dCwgND47CituYXRpdmUgdHlwZWRlZiB2ZWN0b3I8Y2hhciwgMj47Cit0eXBlZGVmIGNoYXIyID0g
dmVjdG9yPGNoYXIsIDI+OworbmF0aXZlIHR5cGVkZWYgdmVjdG9yPGNoYXIsIDM+OwordHlwZWRl
ZiBjaGFyMyA9IHZlY3RvcjxjaGFyLCAzPjsKK25hdGl2ZSB0eXBlZGVmIHZlY3RvcjxjaGFyLCA0
PjsKK3R5cGVkZWYgY2hhcjQgPSB2ZWN0b3I8Y2hhciwgND47CituYXRpdmUgdHlwZWRlZiB2ZWN0
b3I8c2hvcnQsIDI+OwordHlwZWRlZiBzaG9ydDIgPSB2ZWN0b3I8c2hvcnQsIDI+OworbmF0aXZl
IHR5cGVkZWYgdmVjdG9yPHNob3J0LCAzPjsKK3R5cGVkZWYgc2hvcnQzID0gdmVjdG9yPHNob3J0
LCAzPjsKK25hdGl2ZSB0eXBlZGVmIHZlY3RvcjxzaG9ydCwgND47Cit0eXBlZGVmIHNob3J0NCA9
IHZlY3RvcjxzaG9ydCwgND47CituYXRpdmUgdHlwZWRlZiB2ZWN0b3I8aW50LCAyPjsKK3R5cGVk
ZWYgaW50MiA9IHZlY3RvcjxpbnQsIDI+OworbmF0aXZlIHR5cGVkZWYgdmVjdG9yPGludCwgMz47
Cit0eXBlZGVmIGludDMgPSB2ZWN0b3I8aW50LCAzPjsKK25hdGl2ZSB0eXBlZGVmIHZlY3Rvcjxp
bnQsIDQ+OwordHlwZWRlZiBpbnQ0ID0gdmVjdG9yPGludCwgND47CituYXRpdmUgdHlwZWRlZiB2
ZWN0b3I8aGFsZiwgMj47Cit0eXBlZGVmIGhhbGYyID0gdmVjdG9yPGhhbGYsIDI+OworbmF0aXZl
IHR5cGVkZWYgdmVjdG9yPGhhbGYsIDM+OwordHlwZWRlZiBoYWxmMyA9IHZlY3RvcjxoYWxmLCAz
PjsKK25hdGl2ZSB0eXBlZGVmIHZlY3RvcjxoYWxmLCA0PjsKK3R5cGVkZWYgaGFsZjQgPSB2ZWN0
b3I8aGFsZiwgND47CituYXRpdmUgdHlwZWRlZiB2ZWN0b3I8ZmxvYXQsIDI+OwordHlwZWRlZiBm
bG9hdDIgPSB2ZWN0b3I8ZmxvYXQsIDI+OworbmF0aXZlIHR5cGVkZWYgdmVjdG9yPGZsb2F0LCAz
PjsKK3R5cGVkZWYgZmxvYXQzID0gdmVjdG9yPGZsb2F0LCAzPjsKK25hdGl2ZSB0eXBlZGVmIHZl
Y3RvcjxmbG9hdCwgND47Cit0eXBlZGVmIGZsb2F0NCA9IHZlY3RvcjxmbG9hdCwgND47CiAKIG5h
dGl2ZSBvcGVyYXRvciBpbnQodWludCk7CiBuYXRpdmUgb3BlcmF0b3IgaW50KHVjaGFyKTsKQEAg
LTE0NywyOCArMjAwLDEyIEBAIGJvb2wgb3BlcmF0b3J+KGJvb2wgdmFsdWUpCiB7CiAgICAgcmV0
dXJuICF2YWx1ZTsKIH0KLQotbmF0aXZlIHR5cGVkZWYgdWNoYXIyOwotbmF0aXZlIHR5cGVkZWYg
dWNoYXIzOwotbmF0aXZlIHR5cGVkZWYgdWNoYXI0OwotCi1uYXRpdmUgdHlwZWRlZiB1aW50MjsK
LW5hdGl2ZSB0eXBlZGVmIHVpbnQzOwotbmF0aXZlIHR5cGVkZWYgdWludDQ7Ci0KLW5hdGl2ZSB0
eXBlZGVmIGludDI7Ci1uYXRpdmUgdHlwZWRlZiBpbnQzOwotbmF0aXZlIHR5cGVkZWYgaW50NDsK
LQotbmF0aXZlIHR5cGVkZWYgZmxvYXQyOwotbmF0aXZlIHR5cGVkZWYgZmxvYXQzOwotbmF0aXZl
IHR5cGVkZWYgZmxvYXQ0OwogYDsKIAogLy8gRklYTUU6IE9uY2UgdGhlIHN0YW5kYXJkIGxpYnJh
cnkgaGFzIGJlZW4gcmVwbGFjZWQgd2l0aCBhIG5ldyB2ZXJzaW9uLCB0aGlzIGNvbW1lbnRzIHNo
b3VsZCBiZSByZW1vdmVkLgogLy8gVGhpcyBsaXN0IGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGF2
YWlsYWJpbGl0eSBvZiB2ZWN0b3IgdHlwZXMgYXZhaWxhYmxlIGluIHRoZSBsYW5nYXVnZS4KIC8v
IFBlcm1pc3NpYmxlIHZlY3RvciBlbGVtZW50IHR5cGVzIG11c3QgYXBwZWFyIGluIHRoaXMgbGlz
dCBhbmQgaW4gdGhlIHN0YW5kYXJkIGxpYnJhcnkKLWNvbnN0IFZlY3RvckVsZW1lbnRUeXBlcyA9
IFsgLyoiYm9vbCIsKi8gInVjaGFyIiwgLyoiY2hhciIsICJ1c2hvcnQiLCAic2hvcnQiLCovICJ1
aW50IiwgImludCIsIC8qICJoYWxmIiwgKi8iZmxvYXQiIF07Citjb25zdCBWZWN0b3JFbGVtZW50
VHlwZXMgPSBbICJib29sIiwgInVjaGFyIiwgImNoYXIiLCAidXNob3J0IiwgInNob3J0IiwgInVp
bnQiLCAiaW50IiwgImhhbGYiLCAiZmxvYXQiIF07CiBjb25zdCBWZWN0b3JFbGVtZW50U2l6ZXMg
PSBbIDIsIDMsIDQgXTsKIAogZnVuY3Rpb24gYWxsVmVjdG9yVHlwZU5hbWVzKCkKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0YXRlbWVudENsb25lci5qcyBiL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0YXRlbWVudENsb25lci5qcwppbmRleCBiMzk0
OGM0NTBjNzE2MDk3Nzk3NWVkNGU4ZTk4ZWQ5OWM0ZjdhMDU5Li4wZDA3MTVhOTg1NGRlZjFiZmQy
YTgwOGM3NDA0MTEyYmExYTRhMGMxIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9TdGF0ZW1lbnRDbG9uZXIuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvU3RhdGVtZW50Q2xvbmVyLmpzCkBAIC01MCw3ICs1MCw3IEBAIGNsYXNzIFN0YXRlbWVu
dENsb25lciBleHRlbmRzIFJld3JpdGVyIHsKICAgICAKICAgICB2aXNpdE5hdGl2ZVR5cGUobm9k
ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgTmF0aXZlVHlwZShub2RlLm9yaWdpbiwgbm9k
ZS5uYW1lKTsKKyAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVUeXBlKG5vZGUub3JpZ2luLCBub2Rl
Lm5hbWUsIG5vZGUudHlwZUFyZ3VtZW50cy5tYXAoYXJndW1lbnQgPT4gYXJndW1lbnQudmlzaXQo
dGhpcykpKTsKICAgICB9CiAgICAgCiAgICAgdmlzaXRUeXBlRGVmKG5vZGUpCmRpZmYgLS1naXQg
YS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TeW50aGVzaXplRGVmYXVsdENvbnN0cnVj
dG9yT3BlcmF0b3IuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TeW50aGVzaXpl
RGVmYXVsdENvbnN0cnVjdG9yT3BlcmF0b3IuanMKaW5kZXggZmVmZTljMDNkN2IxMGIzMTE2YjNi
NjdmMmFmMDU3ZjE2ZmMxNTE2Yy4uM2EzZjc2NzM4NjdiOWFhYjAxMzIyMTgwMzU2ODczOGMxNjNh
NTY3ZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6
ZURlZmF1bHRDb25zdHJ1Y3Rvck9wZXJhdG9yLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL1N5bnRoZXNpemVEZWZhdWx0Q29uc3RydWN0b3JPcGVyYXRvci5qcwpAQCAtNDUs
NiArNDUsMTIgQEAgZnVuY3Rpb24gc3ludGhlc2l6ZURlZmF1bHRDb25zdHJ1Y3Rvck9wZXJhdG9y
KHByb2dyYW0pCiAgICAgICAgICAgICB0eXBlcy5hZGQobm9kZSk7CiAgICAgICAgICAgICBzdXBl
ci52aXNpdEVsZW1lbnRhbFR5cGUobm9kZSk7CiAgICAgICAgIH0KKworICAgICAgICB2aXNpdFZl
Y3RvclR5cGUobm9kZSkKKyAgICAgICAgeworICAgICAgICAgICAgdHlwZXMuYWRkKG5vZGUpOwor
ICAgICAgICAgICAgc3VwZXIudmlzaXRWZWN0b3JUeXBlKG5vZGUpOworICAgICAgICB9CiAgICAg
fQogCiAgICAgcHJvZ3JhbS52aXNpdChuZXcgRmluZEFsbFR5cGVzKCkpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6ZVN0cnVjdEFjY2Vzc29ycy5q
cyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N5bnRoZXNpemVTdHJ1Y3RBY2Nlc3Nv
cnMuanMKaW5kZXggYmZlNjA0NDk0ZGM3MjVhZTdlNzRhZDRhMGJmZTIzZTkzYzA5MTc3Ni4uYTAx
ODE0NjhhMjVlZDRjMDkwNTBkN2JmMWQ2MWY0NGVkM2EwYWE2NiAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6ZVN0cnVjdEFjY2Vzc29ycy5qcworKysg
Yi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TeW50aGVzaXplU3RydWN0QWNjZXNzb3Jz
LmpzCkBAIC01MSw3ICs1MSw3IEBAIGZ1bmN0aW9uIHN5bnRoZXNpemVTdHJ1Y3RBY2Nlc3NvcnMo
cHJvZ3JhbSkKICAgICAgICAgICAgIAogICAgICAgICAgICAgZnVuY3Rpb24gY3JlYXRlVHlwZVJl
ZigpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFR5cGVSZWYuaW5zdGFu
dGlhdGUodHlwZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFR5cGVSZWYud3JhcCh0eXBlKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgbGV0IGlzQ2FzdCA9IGZh
bHNlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5odG1s
IGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5odG1sCmluZGV4IDEzZjM1ODIz
OTkyOWQ4YTNlNmFjZTUyNTQ1YjkxY2E1MmQ2MDYwZTQuLjYzOTA4ZjdmNDMyODY3NzMwMzViYjAz
ZjJlZmVlMGI3NzQ0M2FiNTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL1Rlc3QuaHRtbAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0
bWwKQEAgLTM3LDYgKzM3LDcgQEAKIDxzY3JpcHQgc3JjPSJDaGVja1JlY3Vyc2lvbi5qcyI+PC9z
Y3JpcHQ+CiA8c2NyaXB0IHNyYz0iQ2hlY2tSZWN1cnNpdmVUeXBlcy5qcyI+PC9zY3JpcHQ+CiA8
c2NyaXB0IHNyYz0iQ2hlY2tSZXR1cm5zLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJDaGVj
a1R5cGVzV2l0aEFyZ3VtZW50cy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iQ2hlY2tVbnJl
YWNoYWJsZUNvZGUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkNoZWNrV3JhcHBlZC5qcyI+
PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iQ2hlY2tlci5qcyI+PC9zY3JpcHQ+CkBAIC0xMTAsNyAr
MTExLDYgQEAKIDxzY3JpcHQgc3JjPSJSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLmpzIj48L3Nj
cmlwdD4KIDxzY3JpcHQgc3JjPSJSZWN1cnNpb25DaGVja2VyLmpzIj48L3NjcmlwdD4KIDxzY3Jp
cHQgc3JjPSJSZWN1cnNpdmVUeXBlQ2hlY2tlci5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
UmVtb3ZlVHlwZUFyZ3VtZW50cy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iUmVzb2x2ZU5h
bWVzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJSZXNvbHZlT3ZlcmxvYWRJbXBsLmpzIj48
L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJSZXNvbHZlUHJvcGVydGllcy5qcyI+PC9zY3JpcHQ+CkBA
IC0xMzQsNiArMTM0LDcgQEAKIDxzY3JpcHQgc3JjPSJUeXBlRGVmLmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQgc3JjPSJUeXBlRGVmUmVzb2x2ZXIuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlR5
cGVSZWYuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlR5cGVPdmVybG9hZFJlc29sdXRpb25G
YWlsdXJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJUeXBlZFZhbHVlLmpzIj48L3Njcmlw
dD4KIDxzY3JpcHQgc3JjPSJVaW50TGl0ZXJhbC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0i
VWludExpdGVyYWxUeXBlLmpzIj48L3NjcmlwdD4KQEAgLTE1NCw3ICsxNTUsNyBAQAogPHNjcmlw
dD4KIGZ1bmN0aW9uIGRvVGVzdEluQnJvd3NlcigpCiB7Ci0gICAgdmFyIHRlc3RlciA9IGRvVGVz
dCgvLiovKTsKKyAgICB2YXIgdGVzdGVyID0gZG9UZXN0KC92ZWN0b3JUeXBlU3ludGF4Lyk7CiAg
ICAgdmFyIGxhc3RUaW1lOwogICAgIGZ1bmN0aW9uIG5leHQoKQogICAgIHsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuanMgYi9Ub29scy9XZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9UZXN0LmpzCmluZGV4IDVkMDdkOWIxOTZkYTZkZTY0ZWRhMmNkYTEzOWRm
M2MyMmY3MDUwMTguLmZmODcwMDY3NmM4ZmMzZTQ4ZGRiYzk3OWUxMjM5MTBiOTAzMThhNTggMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuanMKKysrIGIvVG9v
bHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5qcwpAQCAtMjg4MSw3ICsyODgxLDcgQEAg
dGVzdHMuc2hhZGVyVHlwZXMgPSBmdW5jdGlvbigpCiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBmcmFnbWVudCBCb28gYmFyKEZvbyBzdGFnZUluKQogICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIHJldHVybiBib28oKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gQm9vKCk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIGApLAogICAgICAgICAoZSkgPT4gZSBpbnN0YW5jZW9mIFdUeXBl
RXJyb3IpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVHlwZU92
ZXJsb2FkUmVzb2x1dGlvbkZhaWx1cmUuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9UeXBlT3ZlcmxvYWRSZXNvbHV0aW9uRmFpbHVyZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNWNiM2Y3MTBm
YTBjZTAzZDI5MDJmYTMyZWQ4YjAyNzVmYjYyNjA4Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVHlwZU92ZXJsb2FkUmVzb2x1dGlvbkZhaWx1cmUuanMK
QEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworInVzZSBzdHJpY3QiOworCitjbGFzcyBUeXBlT3ZlcmxvYWRSZXNvbHV0aW9uRmFpbHVy
ZSB7CisgICAgY29uc3RydWN0b3IodHlwZSwgcmVhc29uKQorICAgIHsKKyAgICAgICAgdGhpcy5f
dHlwZSA9IHR5cGU7CisgICAgICAgIHRoaXMuX3JlYXNvbiA9IHJlYXNvbjsKKyAgICB9CisgICAg
CisgICAgZ2V0IHR5cGUoKSB7IHJldHVybiB0aGlzLl90eXBlOyB9CisgICAgZ2V0IHJlYXNvbigp
IHsgcmV0dXJuIHRoaXMuX3JlYXNvbjsgfQorICAgIAorICAgIHRvU3RyaW5nKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiB0aGlzLnR5cGUudG9TdHJpbmcoKSArICIgZGlkIG5vdCBtYXRjaCBiZWNh
dXNlOiAiICsgdGhpcy5yZWFzb247CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9Ub29scy9XZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9UeXBlUmVmLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvVHlwZVJlZi5qcwppbmRleCBiNWYzYzBiM2Q5MjUzMmUwNWM2ODAwNTRhMTYxZjA1ZTBk
ZGQ2NDZiLi5lMTUyODE0YzBjN2IxMjc3YTc3MWNlNDRlZGQ5MjBhMzA3ZDg4ZWIyIDEwMDY0NAot
LS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UeXBlUmVmLmpzCisrKyBiL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1R5cGVSZWYuanMKQEAgLTI1LDEyICsyNSwxMyBAQAog
InVzZSBzdHJpY3QiOwogCiBjbGFzcyBUeXBlUmVmIGV4dGVuZHMgVHlwZSB7Ci0gICAgY29uc3Ry
dWN0b3Iob3JpZ2luLCBuYW1lLCB0eXBlQXJndW1lbnRzID0gbnVsbCkKKyAgICBjb25zdHJ1Y3Rv
cihvcmlnaW4sIG5hbWUsIHR5cGVBcmd1bWVudHMgPSBbXSkKICAgICB7CiAgICAgICAgIHN1cGVy
KCk7CiAgICAgICAgIHRoaXMuX29yaWdpbiA9IG9yaWdpbjsKICAgICAgICAgdGhpcy5fbmFtZSA9
IG5hbWU7CiAgICAgICAgIHRoaXMuX3R5cGUgPSBudWxsOworICAgICAgICB0aGlzLl9wb3NzaWJs
ZU92ZXJsb2FkcyA9IG51bGw7CiAgICAgICAgIHRoaXMuX3R5cGVBcmd1bWVudHMgPSB0eXBlQXJn
dW1lbnRzOwogICAgIH0KICAgICAKQEAgLTM4LDE0ICszOSwxMSBAQCBjbGFzcyBUeXBlUmVmIGV4
dGVuZHMgVHlwZSB7CiAgICAgewogICAgICAgICBpZiAodHlwZSBpbnN0YW5jZW9mIFR5cGVSZWYp
CiAgICAgICAgICAgICByZXR1cm4gdHlwZTsKLSAgICAgICAgbGV0IHJlc3VsdCA9IG5ldyBUeXBl
UmVmKHR5cGUub3JpZ2luLCB0eXBlLm5hbWUpOwotICAgICAgICByZXN1bHQudHlwZSA9IHR5cGU7
Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotICAgIAotICAgIHN0YXRpYyBpbnN0YW50
aWF0ZSh0eXBlKQotICAgIHsKLSAgICAgICAgbGV0IHJlc3VsdCA9IG5ldyBUeXBlUmVmKHR5cGUu
b3JpZ2luLCB0eXBlLm5hbWUpOworICAgICAgICBsZXQgcmVzdWx0OworICAgICAgICBpZiAodHlw
ZSBpbnN0YW5jZW9mIE5hdGl2ZVR5cGUpCisgICAgICAgICAgICByZXN1bHQgPSBuZXcgVHlwZVJl
Zih0eXBlLm9yaWdpbiwgdHlwZS5uYW1lLCB0eXBlLnR5cGVBcmd1bWVudHMpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICByZXN1bHQgPSBuZXcgVHlwZVJlZih0eXBlLm9yZ2luLCB0eXBlLm5h
bWUpOwogICAgICAgICByZXN1bHQudHlwZSA9IHR5cGU7CiAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgfQpAQCAtNjMsNiArNjEsNTIgQEAgY2xhc3MgVHlwZVJlZiBleHRlbmRzIFR5cGUgewog
ICAgIHsKICAgICAgICAgdGhpcy5fdHlwZSA9IG5ld1R5cGU7CiAgICAgfQorICAgIAorICAgIGdl
dCBwb3NzaWJsZU92ZXJsb2FkcygpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fcG9zc2li
bGVPdmVybG9hZHM7CisgICAgfQorCisgICAgc2V0IHBvc3NpYmxlT3ZlcmxvYWRzKG5ld092ZXJs
b2FkcykKKyAgICB7CisgICAgICAgIGlmICh0aGlzLnR5cGUpCisgICAgICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoIlR5cGVSZWZzIHdpdGgga25vd24gdHlwZSBzaG91bGQgbm90IGhhdmUgb3Zlcmxv
YWRzLiIpOworICAgICAgICB0aGlzLl9wb3NzaWJsZU92ZXJsb2FkcyA9IG5ld092ZXJsb2FkczsK
KyAgICB9CisKKyAgICByZXNvbHZlKHBvc3NpYmxlT3ZlcmxvYWRzLCBwcm9ncmFtKQorICAgIHsK
KyAgICAgICAgaWYgKCFwb3NzaWJsZU92ZXJsb2FkcykKKyAgICAgICAgICAgIHRocm93IG5ldyBX
VHlwZUVycm9yKHRoaXMub3JpZ2luLm9yaWdpblN0cmluZywgIkRpZCBub3QgZmluZCBhbnkgdHlw
ZXMgbmFtZWQgIiArIHRoaXMubmFtZSk7CisKKyAgICAgICAgbGV0IGZhaWx1cmVzID0gW107Cisg
ICAgICAgIGxldCBvdmVybG9hZCA9IHJlc29sdmVUeXBlT3ZlcmxvYWRJbXBsKHBvc3NpYmxlT3Zl
cmxvYWRzLCB0aGlzLnR5cGVBcmd1bWVudHMpOworCisgICAgICAgIGlmICghb3ZlcmxvYWQudHlw
ZSkgeworICAgICAgICAgICAgZmFpbHVyZXMucHVzaCguLi5vdmVybG9hZC5mYWlsdXJlcyk7Cisg
ICAgICAgICAgICBsZXQgbWVzc2FnZSA9ICJEaWQgbm90IGZpbmQgdHlwZSBuYW1lZCAiICsgdGhp
cy5uYW1lICsgIiBmb3IgdHlwZSBhcmd1bWVudHMgIjsKKyAgICAgICAgICAgIG1lc3NhZ2UgKz0g
IigiICsgdGhpcy50eXBlQXJndW1lbnRzICsgIikiOworICAgICAgICAgICAgaWYgKGZhaWx1cmVz
Lmxlbmd0aCkKKyAgICAgICAgICAgICAgICBtZXNzYWdlICs9ICIsIGJ1dCBjb25zaWRlcmVkOlxu
IiArIGZhaWx1cmVzLmpvaW4oIlxuIikKKyAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9y
KHRoaXMub3JpZ2luLm9yaWdpblN0cmluZywgbWVzc2FnZSk7CisgICAgICAgIH0KKworICAgICAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudHlwZUFyZ3VtZW50cy5sZW5ndGg7ICsraSkgewor
ICAgICAgICAgICAgbGV0IHR5cGVBcmd1bWVudCA9IHRoaXMudHlwZUFyZ3VtZW50c1tpXTsKKyAg
ICAgICAgICAgIGxldCByZXNvbHZlZFR5cGVBcmd1bWVudCA9IG92ZXJsb2FkLnR5cGUudHlwZUFy
Z3VtZW50c1tpXTsKKyAgICAgICAgICAgIGxldCByZXN1bHQgPSB0eXBlQXJndW1lbnQuZXF1YWxz
V2l0aENvbW1pdChyZXNvbHZlZFR5cGVBcmd1bWVudCk7CisgICAgICAgICAgICBpZiAoIXJlc3Vs
dCkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkF0ICIgKyB0aGlzLm9yaWdpbi5v
cmlnaW5TdHJpbmcgKyAiIGFyZ3VtZW50IHR5cGVzIGZvciBUeXBlIGFuZCBUeXBlUmVmIG5vdCBl
cXVhbDogYXJndW1lbnQgdHlwZSA9ICIgKyB0eXBlQXJndW1lbnQgKyAiLCByZXNvbHZlZCB0eXBl
IGFyZ3VtZW50ID0gIiArIHJlc29sdmVkVHlwZUFyZ3VtZW50KTsKKyAgICAgICAgICAgIGlmIChy
ZXNvbHZlZFR5cGVBcmd1bWVudC5jb25zdHJ1Y3Rvci5uYW1lID09ICJHZW5lcmljTGl0ZXJhbCIp
IHsKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBwcm9iYWJseSB3cm9uZy4KKyAg
ICAgICAgICAgICAgICByZXN1bHQgPSB0eXBlQXJndW1lbnQudHlwZS5lcXVhbHNXaXRoQ29tbWl0
KHJlc29sdmVkVHlwZUFyZ3VtZW50LnR5cGUpOworICAgICAgICAgICAgICAgIGlmICghcmVzdWx0
KQorICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkF0ICIgKyB0aGlzLm9yaWdp
bi5vcmlnaW5TdHJpbmcgKyAiIGFyZ3VtZW50IHR5cGVzIGZvciBUeXBlIGFuZCBUeXBlUmVmIG5v
dCBlcXVhbDogYXJndW1lbnQgdHlwZSA9ICIgKyB0eXBlQXJndW1lbnQgKyAiLCByZXNvbHZlZCB0
eXBlIGFyZ3VtZW50ID0gIiArIHJlc29sdmVkVHlwZUFyZ3VtZW50KTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgICB0aGlzLnR5cGUgPSBvdmVybG9h
ZC50eXBlOworICAgIH0KIAogICAgIGdldCB1bmlmeU5vZGUoKQogICAgIHsKQEAgLTk5LDcgKzE0
MywxMCBAQCBjbGFzcyBUeXBlUmVmIGV4dGVuZHMgVHlwZSB7CiAgICAgewogICAgICAgICBpZiAo
IXRoaXMubmFtZSkKICAgICAgICAgICAgIHJldHVybiB0aGlzLnR5cGUudG9TdHJpbmcoKTsKLSAg
ICAgICAgcmV0dXJuIHRoaXMubmFtZTsKKyAgICAgICAgbGV0IHJlc3VsdCA9IHRoaXMubmFtZTsK
KyAgICAgICAgaWYgKHRoaXMudHlwZUFyZ3VtZW50cy5sZW5ndGggPiAwKQorICAgICAgICAgICAg
cmVzdWx0ICs9ICI8IiArIHRoaXMudHlwZUFyZ3VtZW50cy5tYXAoYXJndW1lbnQgPT4gYXJndW1l
bnQudG9TdHJpbmcoKSkuam9pbigiLCIpICsgIj4iOworICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVW5p
ZmljYXRpb25Db250ZXh0LmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVW5pZmlj
YXRpb25Db250ZXh0LmpzCmluZGV4IDJmNzE1NDdiMGFmYmUxODAzNzhmMzc5OTYyMzE4NjJhMmI5
MWE4MmUuLjM4MTkxNjk3MjIzZWY3MjFhNTM3OTE0YjM2OTg5NzY3ODFmZTZlNmUgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1VuaWZpY2F0aW9uQ29udGV4dC5qcwor
KysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9VbmlmaWNhdGlvbkNvbnRleHQuanMK
QEAgLTkyLDYgKzkyLDE5IEBAIGNsYXNzIFVuaWZpY2F0aW9uQ29udGV4dCB7CiAgICAgCiAgICAg
dmVyaWZ5KCkKICAgICB7CisgICAgICAgIC8vIFdlIGRvIGEgdHdvLXBoYXNlIHByZS12ZXJpZmlj
YXRpb24uIFRoaXMgZ2l2ZXMgbGl0ZXJhbHMgYSBjaGFuY2UgdG8gc2VsZWN0IGEgbW9yZSBzcGVj
aWZpYyB0eXBlLgorICAgICAgICBsZXQgcHJlcGFyYXRpb25zID0gW107CisgICAgICAgIGZvciAo
bGV0IG5vZGUgb2YgdGhpcy5ub2RlcykgeworICAgICAgICAgICAgbGV0IHByZXBhcmF0aW9uID0g
bm9kZS5wcmVwYXJlVG9WZXJpZnkodGhpcyk7CisgICAgICAgICAgICBpZiAocHJlcGFyYXRpb24p
CisgICAgICAgICAgICAgICAgcHJlcGFyYXRpb25zLnB1c2gocHJlcGFyYXRpb24pOworICAgICAg
ICB9CisgICAgICAgIGZvciAobGV0IHByZXBhcmF0aW9uIG9mIHByZXBhcmF0aW9ucykgeworICAg
ICAgICAgICAgbGV0IHJlc3VsdCA9IHByZXBhcmF0aW9uKCk7CisgICAgICAgICAgICBpZiAoIXJl
c3VsdC5yZXN1bHQpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQor
CiAgICAgICAgIGZvciAobGV0IHR5cGVBcmd1bWVudCBvZiB0aGlzLnR5cGVBcmd1bWVudHMoKSkg
ewogICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHR5cGVBcmd1bWVudC52ZXJpZnlBc0FyZ3VtZW50
KHRoaXMpOwogICAgICAgICAgICAgaWYgKCFyZXN1bHQucmVzdWx0KQpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVmVjdG9yVHlwZS5qcyBiL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL1ZlY3RvclR5cGUuanMKaW5kZXggNTAxNGM2NzFhMDc4ODIwMDJjMjM0
YmIzMmYxN2M4ODYwZWZmYzFjNi4uZGYwY2JjMmM3MzA4ZjQ1NDEzY2JjYzI4ZDg5NjIxYmMwM2Fi
MjYwNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVmVjdG9yVHlw
ZS5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9WZWN0b3JUeXBlLmpzCkBA
IC0yNSwxOSArMjUsMTQgQEAKICJ1c2Ugc3RyaWN0IjsKIAogY2xhc3MgVmVjdG9yVHlwZSBleHRl
bmRzIE5hdGl2ZVR5cGUgewotICAgIGNvbnN0cnVjdG9yKG9yaWdpbiwgbmFtZSkKKyAgICBjb25z
dHJ1Y3RvcihvcmlnaW4sIG5hbWUsIHR5cGVBcmd1bWVudHMpCiAgICAgewotICAgICAgICBzdXBl
cihvcmlnaW4sIG5hbWUpOwotICAgICAgICBjb25zdCBtYXRjaCA9IC9eKFtBLXpdKykoWzAtOV0p
JC8uZXhlYyhuYW1lKTsKLSAgICAgICAgaWYgKCFtYXRjaCkKLSAgICAgICAgICAgIHRocm93IG5l
dyBXVHlwZUVycm9yKG9yaWdpbi5vcmlnaW5TdHJpbmcsIGAke25hbWV9IGRvZXNuJ3QgbWF0Y2gg
dGhlIGZvcm1hdCBmb3IgdmVjdG9yIHR5cGUgbmFtZXMuJ2ApOwotCi0gICAgICAgIHRoaXMuX2Vs
ZW1lbnRUeXBlID0gbmV3IFR5cGVSZWYob3JpZ2luLCBtYXRjaFsxXSk7Ci0gICAgICAgIHRoaXMu
X251bUVsZW1lbnRzVmFsdWUgPSBwYXJzZUludChtYXRjaFsyXSk7CisgICAgICAgIHN1cGVyKG9y
aWdpbiwgbmFtZSwgdHlwZUFyZ3VtZW50cyk7CiAgICAgfQogCi0gICAgZ2V0IGVsZW1lbnRUeXBl
KCkgeyByZXR1cm4gdGhpcy5fZWxlbWVudFR5cGU7IH0KLSAgICBnZXQgbnVtRWxlbWVudHNWYWx1
ZSgpIHsgcmV0dXJuIHRoaXMuX251bUVsZW1lbnRzVmFsdWU7IH0KKyAgICBnZXQgZWxlbWVudFR5
cGUoKSB7IHJldHVybiB0aGlzLnR5cGVBcmd1bWVudHNbMF07IH0KKyAgICBnZXQgbnVtRWxlbWVu
dHMoKSB7IHJldHVybiB0aGlzLnR5cGVBcmd1bWVudHNbMV07IH0KKyAgICBnZXQgbnVtRWxlbWVu
dHNWYWx1ZSgpIHsgcmV0dXJuIHRoaXMubnVtRWxlbWVudHMudmFsdWU7IH0KICAgICBnZXQgc2l6
ZSgpIHsgcmV0dXJuIHRoaXMuZWxlbWVudFR5cGUuc2l6ZSAqIHRoaXMubnVtRWxlbWVudHNWYWx1
ZTsgfQogCiAgICAgdW5pZnlJbXBsKHVuaWZpY2F0aW9uQ29udGV4dCwgb3RoZXIpCkBAIC01OSw3
ICs1NCw3IEBAIGNsYXNzIFZlY3RvclR5cGUgZXh0ZW5kcyBOYXRpdmVUeXBlIHsKIAogICAgIHRv
U3RyaW5nKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBgbmF0aXZlIHR5cGVkZWYgJHt0aGlzLmVs
ZW1lbnRUeXBlfSR7dGhpcy5udW1FbGVtZW50c1ZhbHVlfWA7CisgICAgICAgIHJldHVybiBgbmF0
aXZlIHR5cGVkZWYgdmVjdG9yPCR7dGhpcy5lbGVtZW50VHlwZX0sICR7dGhpcy5udW1FbGVtZW50
c1ZhbHVlfT5gOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvVmlzaXRvci5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Zpc2l0
b3IuanMKaW5kZXggN2QzODdiMjVmMjU4OWI4NzM5MThhZjJmNDRjMjQzNGFkNjU4NzQ3Zi4uNjBk
ZmNlYmYxYWUxZDU5OGQzMjk4MGQ1NmQ3ODRmMTQ1MzhkNTUzYyAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVmlzaXRvci5qcworKysgYi9Ub29scy9XZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9WaXNpdG9yLmpzCkBAIC02OCwxMCArNjgsMTQgQEAgY2xhc3MgVmlzaXRv
ciB7CiAgICAgCiAgICAgdmlzaXRUeXBlUmVmKG5vZGUpCiAgICAgeworICAgICAgICBmb3IgKGxl
dCB0eXBlQXJndW1lbnQgb2Ygbm9kZS50eXBlQXJndW1lbnRzKQorICAgICAgICAgICAgdHlwZUFy
Z3VtZW50LnZpc2l0KHRoaXMpOwogICAgIH0KICAgICAKICAgICB2aXNpdE5hdGl2ZVR5cGUobm9k
ZSkKICAgICB7CisgICAgICAgIGZvciAobGV0IHR5cGVBcmd1bWVudCBvZiBub2RlLnR5cGVBcmd1
bWVudHMpCisgICAgICAgICAgICB0eXBlQXJndW1lbnQudmlzaXQodGhpcyk7CiAgICAgfQogICAg
IAogICAgIHZpc2l0VHlwZURlZihub2RlKQpAQCAtMzI3LDYgKzMzMSw3IEBAIGNsYXNzIFZpc2l0
b3IgewogICAgIHZpc2l0VmVjdG9yVHlwZShub2RlKQogICAgIHsKICAgICAgICAgbm9kZS5lbGVt
ZW50VHlwZS52aXNpdCh0aGlzKTsKKyAgICAgICAgbm9kZS5udW1FbGVtZW50cy52aXNpdCh0aGlz
KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L2NoZWNrVHlwZXNXaXRoQXJndW1lbnRzLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvY2hlY2tUeXBlc1dpdGhBcmd1bWVudHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmI2YjJiZDQ5OGU3N2Ix
NDlkZjRjNjhmNGVmM2FjMWZmMWNkYWFiMgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL2NoZWNrVHlwZXNXaXRoQXJndW1lbnRzLmpzCkBAIC0wLDAgKzEs
MzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKyJ1c2Ug
c3RyaWN0IjsKKworZnVuY3Rpb24gY2hlY2tUeXBlc1dpdGhBcmd1bWVudHMocHJvZ3JhbSkKK3sK
KyAgICBjbGFzcyBUeXBlV2l0aEFyZ3VtZW50c0NoZWNrZXIgZXh0ZW5kcyBWaXNpdG9yIHsKKyAg
ICAgICAgdmlzaXRUeXBlUmVmKG5vZGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChub2Rl
Lm5hbWUgPT0gInZlY3RvciIgJiYgbm9kZS50eXBlQXJndW1lbnRzLmxlbmd0aCA9PSAwKQorICAg
ICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQnVpbHRpbiB0eXBlICR7bm9kZS5uYW1lfSBz
aG91bGQgYWx3YXlzIGhhdmUgdHlwZSBhcmd1bWVudHMuIik7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgcHJvZ3JhbS52aXNpdChuZXcgVHlwZVdpdGhBcmd1bWVudHNDaGVja2VyKCkpOworfQorCmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9pbmRleC5odG1sIGIvVG9v
bHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvaW5kZXguaHRtbAppbmRleCA0YzkzYTMzZTZhMzg2
NjJlOGJhMWU4NDI0MDNkNGMwMmQ1ZTlmOWRmLi45YzMxY2U5ZjRhODQ3NjQ5NDU2ZTU0NzUwN2Iw
YjMyZTA1NmFjYjFiIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9p
bmRleC5odG1sCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL2luZGV4Lmh0bWwK
QEAgLTM4LDYgKzM4LDcgQEAKIDxzY3JpcHQgc3JjPSJDaGVja1JlY3Vyc2l2ZVR5cGVzLmpzIj48
L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJDaGVja1JldHVybnMuanMiPjwvc2NyaXB0PgogPHNjcmlw
dCBzcmM9IkNoZWNrVW5yZWFjaGFibGVDb2RlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJD
aGVja1R5cGVzV2l0aEFyZ3VtZW50cy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iQ2hlY2tX
cmFwcGVkLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJDaGVja2VyLmpzIj48L3NjcmlwdD4K
IDxzY3JpcHQgc3JjPSJDbG9uZVByb2dyYW0uanMiPjwvc2NyaXB0PgpAQCAtMTEwLDcgKzExMSw2
IEBACiA8c2NyaXB0IHNyYz0iUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5qcyI+PC9zY3JpcHQ+
CiA8c2NyaXB0IHNyYz0iUmVjdXJzaW9uQ2hlY2tlci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNy
Yz0iUmVjdXJzaXZlVHlwZUNoZWNrZXIuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9IlJlbW92
ZVR5cGVBcmd1bWVudHMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlJlc29sdmVOYW1lcy5q
cyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iUmVzb2x2ZU92ZXJsb2FkSW1wbC5qcyI+PC9zY3Jp
cHQ+CiA8c2NyaXB0IHNyYz0iUmVzb2x2ZVByb3BlcnRpZXMuanMiPjwvc2NyaXB0PgpAQCAtMTM0
LDYgKzEzNCw3IEBACiA8c2NyaXB0IHNyYz0iVHlwZURlZi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0
IHNyYz0iVHlwZURlZlJlc29sdmVyLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJUeXBlUmVm
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJUeXBlT3ZlcmxvYWRSZXNvbHV0aW9uRmFpbHVy
ZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iVHlwZWRWYWx1ZS5qcyI+PC9zY3JpcHQ+CiA8
c2NyaXB0IHNyYz0iVWludExpdGVyYWwuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlVpbnRM
aXRlcmFsVHlwZS5qcyI+PC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347757</attachid>
            <date>2018-08-21 19:39:20 -0700</date>
            <delta_ts>2018-08-22 13:32:57 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-188773-20180821193919.patch</filename>
            <type>text/plain</type>
            <size>74565</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1MTU1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMzNiMzdmYjlhMWFmY2FhMzI5ZDlmZTk3NTM1OWYxMzU3
NTQ1M2I1Yy4uMDIwNDRmMTFhOWFlNTljMTg0NDQ1OTE4Zjk1MjlmMGZkNjhlZWNhMiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMx
IEBACisyMDE4LTA4LTIxICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CisKKyAgICAgICAgW1dITFNMXSBBbGxvdyBuYXRpdmUgdHlwZXMgdG8gaGF2ZSB0eXBlIGFyZ3Vt
ZW50cyAobGlrZSAidmVjdG9yPGZsb2F0LCA0PiIpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODg3NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0ludHJpbnNp
Y3MuanM6CisgICAgICAgIChJbnRyaW5zaWNzLmNhc3QpOgorICAgICAgICAoSW50cmluc2ljcy5i
aXR3aXNlQ2FzdCk6CisgICAgICAgIChJbnRyaW5zaWNzLmNhc3RUb0hhbGYpOgorICAgICAgICAo
SW50cmluc2ljcy4pOgorICAgICAgICAoSW50cmluc2ljcyk6CisgICAgICAgICogV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvTmF0aXZlVHlwZS5qczoKKyAgICAgICAgKE5hdGl2ZVR5cGUpOgorICAg
ICAgICAoTmF0aXZlVHlwZS5wcm90b3R5cGUuZ2V0IHR5cGVBcmd1bWVudHMpOgorICAgICAgICAo
TmF0aXZlVHlwZS5wcm90b3R5cGUudG9TdHJpbmcpOgorICAgICAgICAoTmF0aXZlVHlwZS5jcmVh
dGUpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1BhcnNlLmpzOgorICAgICAg
ICAoaXNDYWxsRXhwcmVzc2lvbik6CisgICAgICAgIChwYXJzZU5hdGl2ZSk6CisgICAgICAgICog
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhbmRhcmRMaWJyYXJ5LmpzOgorICAgICAgICAoYm9v
bC5vcGVyYXRvcik6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVmVjdG9yVHlw
ZS5qczoKKyAgICAgICAgKFZlY3RvclR5cGUpOgorICAgICAgICAoVmVjdG9yVHlwZS5wcm90b3R5
cGUuZ2V0IGVsZW1lbnRUeXBlKToKKyAgICAgICAgKFZlY3RvclR5cGUucHJvdG90eXBlLmdldCBu
dW1FbGVtZW50c1ZhbHVlKToKKwogMjAxOC0wOC0yMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFRyYW5zaXRpb24gUmVzaXplUmV2ZXJzZVBh
Z2luYXRlZFdlYlZpZXcgQVBJIHRlc3QgZnJvbSBXS1BhZ2VMb2FkZXJDbGllbnQgdG8gV0tQYWdl
TmF2aWdhdGlvbkNsaWVudApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvQWxsLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQWxsLmpzCmluZGV4IDgx
NTI1MjczYWU2NWExNDg2NTk2NGExM2RhNDVjZTk0ZWYxMDY4NGEuLmY5YTFkOTllYWRjODdiNGE0
MDhjZmY5ZTQ5OTBhNzM3ZWNiOGJhMWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL0FsbC5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9BbGwu
anMKQEAgLTYwLDYgKzYwLDcgQEAgbG9hZCgiQ2hlY2tMb29wcy5qcyIpOwogbG9hZCgiQ2hlY2tS
ZWN1cnNpb24uanMiKTsKIGxvYWQoIkNoZWNrUmVjdXJzaXZlVHlwZXMuanMiKTsKIGxvYWQoIkNo
ZWNrUmV0dXJucy5qcyIpOworbG9hZCgiQ2hlY2tUeXBlc1dpdGhBcmd1bWVudHMuanMiKTsKIGxv
YWQoIkNoZWNrVW5yZWFjaGFibGVDb2RlLmpzIik7CiBsb2FkKCJDaGVja1dyYXBwZWQuanMiKTsK
IGxvYWQoIkNoZWNrZXIuanMiKTsKQEAgLTEzMyw3ICsxMzQsNiBAQCBsb2FkKCJQdHJUeXBlLmpz
Iik7CiBsb2FkKCJSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLmpzIik7CiBsb2FkKCJSZWN1cnNp
b25DaGVja2VyLmpzIik7CiBsb2FkKCJSZWN1cnNpdmVUeXBlQ2hlY2tlci5qcyIpOwotbG9hZCgi
UmVtb3ZlVHlwZUFyZ3VtZW50cy5qcyIpOwogbG9hZCgiUmVzb2x2ZU5hbWVzLmpzIik7CiBsb2Fk
KCJSZXNvbHZlT3ZlcmxvYWRJbXBsLmpzIik7CiBsb2FkKCJSZXNvbHZlUHJvcGVydGllcy5qcyIp
OwpAQCAtMTU3LDYgKzE1Nyw3IEBAIGxvYWQoIlRyYXBTdGF0ZW1lbnQuanMiKTsKIGxvYWQoIlR5
cGVEZWYuanMiKTsKIGxvYWQoIlR5cGVEZWZSZXNvbHZlci5qcyIpOwogbG9hZCgiVHlwZVJlZi5q
cyIpOworbG9hZCgiVHlwZU92ZXJsb2FkUmVzb2x1dGlvbkZhaWx1cmUuanMiKTsKIGxvYWQoIlR5
cGVkVmFsdWUuanMiKTsKIGxvYWQoIlVpbnRMaXRlcmFsLmpzIik7CiBsb2FkKCJVaW50TGl0ZXJh
bFR5cGUuanMiKTsKQEAgLTE3MCw0ICsxNzEsNCBAQCBsb2FkKCJXU3ludGF4RXJyb3IuanMiKTsK
IGxvYWQoIldUcmFwRXJyb3IuanMiKTsKIGxvYWQoIldUeXBlRXJyb3IuanMiKTsKIGxvYWQoIldo
aWxlTG9vcC5qcyIpOwotbG9hZCgiV3JhcENoZWNrZXIuanMiKTsKXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCitsb2FkKCJXcmFwQ2hlY2tlci5qcyIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2FsbEV4cHJlc3Npb24uanMgYi9Ub29scy9XZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9DYWxsRXhwcmVzc2lvbi5qcwppbmRleCBiMjUzOThmMGIxYjZlYWRlMWI3
OWFjOTBlNmE3NjI1MjVmODE5YmQ3Li4zYjE1NDU1OTkyZTY0ZTI2NzdiYTBiMDNhYjY1NjhlZjQz
ZDVkODY1IDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DYWxsRXhw
cmVzc2lvbi5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DYWxsRXhwcmVz
c2lvbi5qcwpAQCAtNjQsNyArNjQsNiBAQCBjbGFzcyBDYWxsRXhwcmVzc2lvbiBleHRlbmRzIEV4
cHJlc3Npb24gewogICAgICAgICAgICAgICAgIG92ZXJsb2FkLmZ1bmMgPSBmdW5jOwogICAgICAg
ICB9CiAKLQogICAgICAgICBpZiAoIW92ZXJsb2FkLmZ1bmMpIHsKICAgICAgICAgICAgIGZhaWx1
cmVzLnB1c2goLi4ub3ZlcmxvYWQuZmFpbHVyZXMpOwogICAgICAgICAgICAgbGV0IG1lc3NhZ2Ug
PSAiRGlkIG5vdCBmaW5kIGZ1bmN0aW9uIG5hbWVkICIgKyB0aGlzLm5hbWUgKyAiIGZvciBjYWxs
IHdpdGggIjsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NoZWNr
ZXIuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DaGVja2VyLmpzCmluZGV4IDFh
MTRjODY2YWNlZDQxMTJiMTgwZjY5MTU2YzA2ZDJiNjY0ZDg3ZTIuLmJiMDA4NzQxNGIwMTVlMzA0
NjFhOGMxZWIzOWY5OGYxNDJhMDMzZWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL0NoZWNrZXIuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
Q2hlY2tlci5qcwpAQCAtNDEsOCArNDEsMTMgQEAgY2xhc3MgQ2hlY2tlciBleHRlbmRzIFZpc2l0
b3IgewogICAgICAgICAgICAgc3RhdGVtZW50LnZpc2l0KHRoaXMpOwogICAgICAgICB9CiAgICAg
ICAgIAotICAgICAgICBmb3IgKGxldCB0eXBlIG9mIG5vZGUudHlwZXMudmFsdWVzKCkpCi0gICAg
ICAgICAgICBkb1N0YXRlbWVudCh0eXBlKTsKKyAgICAgICAgZm9yIChsZXQgdHlwZSBvZiBub2Rl
LnR5cGVzLnZhbHVlcygpKSB7CisgICAgICAgICAgICBpZiAodHlwZSBpbnN0YW5jZW9mIEFycmF5
KSB7CisgICAgICAgICAgICAgICAgZm9yIChsZXQgY29uc3RpdHVlbnRUeXBlIG9mIHR5cGUpCisg
ICAgICAgICAgICAgICAgICAgIGRvU3RhdGVtZW50KGNvbnN0aXR1ZW50VHlwZSk7CisgICAgICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBkb1N0YXRlbWVudCh0eXBlKTsKKyAgICAgICAg
fQogICAgICAgICBmb3IgKGxldCBmdW5jcyBvZiBub2RlLmZ1bmN0aW9ucy52YWx1ZXMoKSkgewog
ICAgICAgICAgICAgZm9yIChsZXQgZnVuYyBvZiBmdW5jcykgewogICAgICAgICAgICAgICAgIHRo
aXMudmlzaXRGdW5jKGZ1bmMpOwpAQCAtMjQ1LDkgKzI1MCwxMyBAQCBjbGFzcyBDaGVja2VyIGV4
dGVuZHMgVmlzaXRvciB7CiAgICAgCiAgICAgdmlzaXRUeXBlUmVmKG5vZGUpCiAgICAgewotICAg
ICAgICBpZiAoIW5vZGUudHlwZSkKKyAgICAgICAgaWYgKCFub2RlLnR5cGUgJiYgIW5vZGUucG9z
c2libGVPdmVybG9hZHMpCiAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlR5cGUgcmVmZXJl
bmNlIHdpdGhvdXQgYSB0eXBlIGluIGNoZWNrZXI6ICIgKyBub2RlICsgIiBhdCAiICsgbm9kZS5v
cmlnaW4pOwotICAgICAgICBpZiAoIShub2RlLnR5cGUgaW5zdGFuY2VvZiBTdHJ1Y3RUeXBlKSkK
KyAgICAgICAgaWYgKCFub2RlLnR5cGUpCisgICAgICAgICAgICBub2RlLnJlc29sdmUobm9kZS5w
b3NzaWJsZU92ZXJsb2FkcywgdGhpcy5fcHJvZ3JhbSk7CisgICAgICAgIGlmICghbm9kZS50eXBl
IHx8ICFub2RlLnR5cGUudmlzaXQpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlR5cGUg
cmVmZXJlbmNlIHdpdGhvdXQgYSB0eXBlIGFmdGVyIHBvc3NpYmx5IHJlc29sdmluZyBpbiBjaGVj
a2VyOiAiICsgbm9kZSArICIgYXQgIiArIG5vZGUub3JpZ2luKTsKKyAgICAgICAgaWYgKCEobm9k
ZS50eXBlIGluc3RhbmNlb2YgU3RydWN0VHlwZSkpIC8vIEZJWE1FOiBXaHkgZG9uJ3Qgd2UgcmVj
dXJzZSBvbiBTdHJ1Y3RUeXBlcz8KICAgICAgICAgICAgIG5vZGUudHlwZS52aXNpdCh0aGlzKTsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0luZmVy
VHlwZXNGb3JDYWxsLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvSW5mZXJUeXBl
c0ZvckNhbGwuanMKaW5kZXggNWYzMmVkMWM0OTBhN2RmODk0MWU5MTljMTMwY2Y2NWVhYThiNmE0
ZC4uYmNmZWI5ODZjYWZmNDlmMDI4N2E4MzY3OGJmMTE1NjI4NDdmMDM4OSAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvSW5mZXJUeXBlc0ZvckNhbGwuanMKKysrIGIv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvSW5mZXJUeXBlc0ZvckNhbGwuanMKQEAgLTM2
LDEyICszNiw4IEBAIGZ1bmN0aW9uIGluZmVyVHlwZXNGb3JDYWxsKGZ1bmMsIGFyZ3VtZW50VHlw
ZXMsIHJldHVyblR5cGUpCiAgICAgICAgIGlmICghYXJndW1lbnRUeXBlc1tpXS51bmlmeSh1bmlm
aWNhdGlvbkNvbnRleHQsIGZ1bmMucGFyYW1ldGVyc1tpXS50eXBlKSkKICAgICAgICAgICAgIHJl
dHVybiB7ZmFpbHVyZTogbmV3IE92ZXJsb2FkUmVzb2x1dGlvbkZhaWx1cmUoZnVuYywgIkFyZ3Vt
ZW50ICMiICsgKGkgKyAxKSArICIgIiArIChmdW5jLnBhcmFtZXRlcnNbaV0ubmFtZSA/ICJmb3Ig
cGFyYW1ldGVyICIgKyBmdW5jLnBhcmFtZXRlcnNbaV0ubmFtZSArICIgIiA6ICIiKSArICJkb2Vz
IG5vdCBtYXRjaCAocGFzc2VkICIgKyBhcmd1bWVudFR5cGVzW2ldICsgIiwgcmVxdWlyZSAiICsg
ZnVuYy5wYXJhbWV0ZXJzW2ldLnR5cGUgKyAiKSIpfTsKICAgICB9Ci0gICAgaWYgKHJldHVyblR5
cGUgJiYgIXJldHVyblR5cGUudW5pZnkodW5pZmljYXRpb25Db250ZXh0LCBmdW5jLnJldHVyblR5
cGUpKSB7Ci0gICAgICAgIGlmIChmdW5jLnJldHVyblR5cGUudG9TdHJpbmcoKSA9PSAidmVjdG9y
IikgewotICAgICAgICAgICAgcmV0dXJuVHlwZS51bmlmeSh1bmlmaWNhdGlvbkNvbnRleHQsIGZ1
bmMucmV0dXJuVHlwZSkKLSAgICAgICAgfQorICAgIGlmIChyZXR1cm5UeXBlICYmICFyZXR1cm5U
eXBlLnVuaWZ5KHVuaWZpY2F0aW9uQ29udGV4dCwgZnVuYy5yZXR1cm5UeXBlKSkKICAgICAgICAg
cmV0dXJuIHtmYWlsdXJlOiBuZXcgT3ZlcmxvYWRSZXNvbHV0aW9uRmFpbHVyZShmdW5jLCAiUmV0
dXJuIHR5cGUgIiArIGZ1bmMucmV0dXJuVHlwZSArICIgZG9lcyBub3QgbWF0Y2ggIiArIHJldHVy
blR5cGUpfTsKLSAgICB9CiAgICAgbGV0IHZlcmlmaWNhdGlvblJlc3VsdCA9IHVuaWZpY2F0aW9u
Q29udGV4dC52ZXJpZnkoKTsKICAgICBpZiAoIXZlcmlmaWNhdGlvblJlc3VsdC5yZXN1bHQpCiAg
ICAgICAgIHJldHVybiB7ZmFpbHVyZTogbmV3IE92ZXJsb2FkUmVzb2x1dGlvbkZhaWx1cmUoZnVu
YywgdmVyaWZpY2F0aW9uUmVzdWx0LnJlYXNvbil9OwpAQCAtNDksMyArNDUsMjEgQEAgZnVuY3Rp
b24gaW5mZXJUeXBlc0ZvckNhbGwoZnVuYywgYXJndW1lbnRUeXBlcywgcmV0dXJuVHlwZSkKICAg
ICByZXR1cm4ge2Z1bmMsIHVuaWZpY2F0aW9uQ29udGV4dH07CiB9CiAKK2Z1bmN0aW9uIGluZmVy
VHlwZXNGb3JUeXBlQXJndW1lbnRzKHR5cGUsIHR5cGVBcmd1bWVudHMpCit7CisgICAgaWYgKHR5
cGVBcmd1bWVudHMubGVuZ3RoICE9IHR5cGUudHlwZUFyZ3VtZW50cy5sZW5ndGgpCisgICAgICAg
IHJldHVybiB7ZmFpbHVyZTogbmV3IFR5cGVPdmVybG9hZFJlc29sdXRpb25GYWlsdXJlKHR5cGUs
ICJXcm9uZyBudW1iZXIgb2YgYXJndW1lbnRzIChwYXNzZWQgIiArIHR5cGVBcmd1bWVudHMubGVu
Z3RoICsgIiwgcmVxdWlyZSAiICsgdHlwZS50eXBlQXJndW1lbnRzLmxlbmd0aCArICIpIil9Owor
ICAgIGxldCB1bmlmaWNhdGlvbkNvbnRleHQgPSBuZXcgVW5pZmljYXRpb25Db250ZXh0KCk7CisK
KyAgICBmb3IgKGxldCBpID0gMDsgaSA8IHR5cGVBcmd1bWVudHMubGVuZ3RoOyArK2kpIHsKKyAg
ICAgICAgaWYgKCF0eXBlQXJndW1lbnRzW2ldKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCJOdWxsIHR5cGUgYXJndW1lbnQgYXQgaSA9ICIgKyBpKTsKKyAgICAgICAgaWYgKCF0eXBlQXJn
dW1lbnRzW2ldLnVuaWZ5KHVuaWZpY2F0aW9uQ29udGV4dCwgdHlwZS50eXBlQXJndW1lbnRzW2ld
KSkKKyAgICAgICAgICAgIHJldHVybiB7ZmFpbHVyZTogbmV3IFR5cGVPdmVybG9hZFJlc29sdXRp
b25GYWlsdXJlKHR5cGUsICJBcmd1bWVudCAjIiArIChpICsgMSkgKyAiICIgKyAodHlwZS50eXBl
QXJndW1lbnRzW2ldLm5hbWUgPyAiZm9yIHBhcmFtZXRlciAiICsgdHlwZS50eXBlQXJndW1lbnRz
W2ldLm5hbWUgKyAiICIgOiAiIikgKyAiZG9lcyBub3QgbWF0Y2ggKHBhc3NlZCAiICsgdHlwZUFy
Z3VtZW50c1tpXSArICIsIHJlcXVpcmUgIiArIHR5cGUudHlwZUFyZ3VtZW50c1tpXS50eXBlICsg
IikiKX07CisgICAgfQorICAgIGxldCB2ZXJpZmljYXRpb25SZXN1bHQgPSB1bmlmaWNhdGlvbkNv
bnRleHQudmVyaWZ5KCk7CisgICAgaWYgKCF2ZXJpZmljYXRpb25SZXN1bHQucmVzdWx0KQorICAg
ICAgICByZXR1cm4ge2ZhaWx1cmU6IG5ldyBUeXBlT3ZlcmxvYWRSZXNvbHV0aW9uRmFpbHVyZSh0
eXBlLCB2ZXJpZmljYXRpb25SZXN1bHQucmVhc29uKX07CisKKyAgICByZXR1cm4ge3R5cGUsIHVu
aWZpY2F0aW9uQ29udGV4dH07Cit9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9JbnRyaW5zaWNzLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvSW50
cmluc2ljcy5qcwppbmRleCA1MGQ0MGMwYzBlNDdlMTEyYmM3NGNjZmNjYjcwNDk0MjcxMTZiMGZi
Li5mZDMyYmMyOGIzYjU5Y2EyYzkxMmM4ZjJlYTQ1YWJkMzU1NzU3MTM2IDEwMDY0NAotLS0gYS9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9JbnRyaW5zaWNzLmpzCisrKyBiL1Rvb2xzL1dl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL0ludHJpbnNpY3MuanMKQEAgLTMzLDE1ICszMyw3IEBAIGNs
YXNzIEludHJpbnNpY3MgewogICAgICAgICAvLyB0byBjYXRjaCB0aGUgaW50cmluc2ljcyBtdXN0
IGJlIGJhc2VkIG9uIHRoZSB0eXBlIG5hbWVzIHRoYXQgU3RhbmRhcmRMaWJyYXJ5LmpzIHVzZXMu
CiAgICAgICAgIC8vIEZvciBleGFtcGxlLCBpZiBhIG5hdGl2ZSBmdW5jdGlvbiBpcyBkZWNsYXJl
ZCB1c2luZyAiaW50IiByYXRoZXIgdGhhbiAiaW50IiwgdGhlbiB3ZSBtdXN0CiAgICAgICAgIC8v
IHVzZSAiaW50IiBoZXJlLCBzaW5jZSB3ZSBkb24ndCB5ZXQga25vdyB0aGF0IHRoZXkgYXJlIHRo
ZSBzYW1lIHR5cGUuCi0gICAgICAgIAotICAgICAgICB0aGlzLl9tYXAuc2V0KAotICAgICAgICAg
ICAgIm5hdGl2ZSB0eXBlZGVmIHZvaWQiLAotICAgICAgICAgICAgdHlwZSA9PiB7Ci0gICAgICAg
ICAgICAgICAgdGhpcy52b2lkID0gdHlwZTsKLSAgICAgICAgICAgICAgICB0eXBlLnNpemUgPSAw
OwotICAgICAgICAgICAgICAgIHR5cGUucG9wdWxhdGVEZWZhdWx0VmFsdWUgPSAoKSA9PiB7IH07
Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgCisKICAgICAgICAgZnVuY3Rpb24gaXNCaXR3aXNl
RXF1aXZhbGVudChsZWZ0LCByaWdodCkKICAgICAgICAgewogICAgICAgICAgICAgbGV0IGRvdWJs
ZUFycmF5ID0gbmV3IEZsb2F0NjRBcnJheSgxKTsKQEAgLTU2LDU4ICs0OCw4MyBAQCBjbGFzcyBJ
bnRyaW5zaWNzIHsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKKyAgICAg
ICAgZnVuY3Rpb24gY2FzdCh0eXBlZEFycmF5Q29uc3RydWN0b3IsIG51bWJlcikKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIGFycmF5ID0gbmV3IHR5cGVkQXJyYXlDb25zdHJ1Y3RvcigxKTsK
KyAgICAgICAgICAgIGFycmF5WzBdID0gbnVtYmVyOworICAgICAgICAgICAgcmV0dXJuIGFycmF5
WzBdOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gYml0d2lzZUNhc3QodHlwZWRBcnJh
eUNvbnN0cnVjdG9yMSwgdHlwZWRBcnJheUNvbnN0cnVjdG9yMiwgdmFsdWUpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGxldCB0eXBlZEFycmF5MSA9IG5ldyB0eXBlZEFycmF5Q29uc3RydWN0b3Ix
KDEpOworICAgICAgICAgICAgbGV0IHR5cGVkQXJyYXkyID0gbmV3IHR5cGVkQXJyYXlDb25zdHJ1
Y3RvcjIodHlwZWRBcnJheTEuYnVmZmVyKTsKKyAgICAgICAgICAgIHR5cGVkQXJyYXkxWzBdID0g
dmFsdWU7CisgICAgICAgICAgICByZXR1cm4gdHlwZWRBcnJheTJbMF07CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBjYXN0VG9IYWxmKG51bWJlcikKKyAgICAgICAgeworICAgICAgICAg
ICAgLy8gRklYTUU6IE1ha2UgdGhpcyBtYXRoIG9iZXkgSUVFRSA3NTQuCisgICAgICAgICAgICBp
ZiAoTnVtYmVyLmlzTmFOKG51bWJlcikpCisgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyCisg
ICAgICAgICAgICBpZiAobnVtYmVyID4gNjU1MDQpCisgICAgICAgICAgICAgICAgcmV0dXJuIE51
bWJlci5QT1NJVElWRV9JTkZJTklUWTsKKyAgICAgICAgICAgIGlmIChudW1iZXIgPCAtNjU1MDQp
CisgICAgICAgICAgICAgICAgcmV0dXJuIE51bWJlci5ORUdBVElWRV9JTkZJTklUWTsKKyAgICAg
ICAgICAgIGlmIChudW1iZXIgPiAwICYmIG51bWJlciA8IE1hdGgucG93KDIsIC0yNCkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBpZiAobnVtYmVyIDwgMCAmJiBudW1i
ZXIgPiAtTWF0aC5wb3coMiwgLTI0KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTA7CisgICAg
ICAgICAgICBsZXQgZG91YmxlQXJyYXkgPSBuZXcgRmxvYXQ2NEFycmF5KDEpOworICAgICAgICAg
ICAgbGV0IHVpbnRBcnJheSA9IG5ldyBVaW50OEFycmF5KGRvdWJsZUFycmF5LmJ1ZmZlcik7Cisg
ICAgICAgICAgICBkb3VibGVBcnJheVswXSA9IG51bWJlcjsKKyAgICAgICAgICAgIGxldCBzaWdu
ID0gdWludEFycmF5WzddICYgMHg4MDsKKyAgICAgICAgICAgIGxldCBleHBvbmVudCA9ICgodWlu
dEFycmF5WzddICYgMHg3ZikgPDwgNCkgfCAoKHVpbnRBcnJheVs2XSAmIDB4ZjApID4+PiA0KTsK
KyAgICAgICAgICAgIGxldCBzaWduaWZpY2FuZCA9ICgodWludEFycmF5WzZdICYgMHgwZikgPDwg
NikgfCAoKHVpbnRBcnJheVs1XSAmIDB4ZmMpID4+PiAyKTsKKworICAgICAgICAgICAgaWYgKChl
eHBvbmVudCAtIDEwMjMpIDwgLTE0KSB7CisgICAgICAgICAgICAgICAgZXhwb25lbnQgPSAwOwor
ICAgICAgICAgICAgICAgIHNpZ25pZmljYW5kID0gKE1hdGguYWJzKG51bWJlcikgKiBNYXRoLnBv
dygyLCAyNCkpID4+PiAwOworICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IE1hdGgucG93KDIs
IC0xNCkgKiBzaWduaWZpY2FuZCAvIDEwMjQ7CisgICAgICAgICAgICAgICAgaWYgKHNpZ24gIT0g
MCkKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgKj0gLTE7CisgICAgICAgICAgICAgICAgcmV0
dXJuIHZhbHVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBkb3VibGVBcnJheVswXSA9
IDA7CisKKyAgICAgICAgICAgIHVpbnRBcnJheVs3XSB8PSBzaWduOworICAgICAgICAgICAgdWlu
dEFycmF5WzddIHw9IChleHBvbmVudCA+Pj4gNCk7CisgICAgICAgICAgICB1aW50QXJyYXlbNl0g
fD0gKChleHBvbmVudCA8PCA0KSAmIDB4ZjApOworICAgICAgICAgICAgdWludEFycmF5WzZdIHw9
IChzaWduaWZpY2FuZCA+Pj4gNik7CisgICAgICAgICAgICB1aW50QXJyYXlbNV0gfD0gKChzaWdu
aWZpY2FuZCA8PCAyKSAmIDB4ZmMpOworCisgICAgICAgICAgICByZXR1cm4gZG91YmxlQXJyYXlb
MF07CisgICAgICAgIH0KKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAotICAgICAgICAgICAgIm5h
dGl2ZSB0eXBlZGVmIGludCIsCisgICAgICAgICAgICAibmF0aXZlIHR5cGVkZWYgdm9pZCIsCiAg
ICAgICAgICAgICB0eXBlID0+IHsKLSAgICAgICAgICAgICAgICB0aGlzLmludCA9IHR5cGU7Ci0g
ICAgICAgICAgICAgICAgdHlwZS5pc1ByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAg
dHlwZS5pc0ludCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgdHlwZS5pc051bWJlciA9IHRydWU7
Ci0gICAgICAgICAgICAgICAgdHlwZS5pc1NpZ25lZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAg
dHlwZS5jYW5SZXByZXNlbnQgPSB2YWx1ZSA9PiBpc0JpdHdpc2VFcXVpdmFsZW50KHZhbHVlIHwg
MCwgdmFsdWUpOwotICAgICAgICAgICAgICAgIHR5cGUuc2l6ZSA9IDE7Ci0gICAgICAgICAgICAg
ICAgdHlwZS5kZWZhdWx0VmFsdWUgPSAwOwotICAgICAgICAgICAgICAgIHR5cGUuY3JlYXRlTGl0
ZXJhbCA9IChvcmlnaW4sIHZhbHVlKSA9PiBJbnRMaXRlcmFsLndpdGhUeXBlKG9yaWdpbiwgdmFs
dWUgfCAwLCB0eXBlKTsKLSAgICAgICAgICAgICAgICB0eXBlLnN1Y2Nlc3NvclZhbHVlID0gdmFs
dWUgPT4gKHZhbHVlICsgMSkgfCAwOwotICAgICAgICAgICAgICAgIHR5cGUudmFsdWVzRXF1YWwg
PSAoYSwgYikgPT4gYSA9PT0gYjsKLSAgICAgICAgICAgICAgICB0eXBlLnBvcHVsYXRlRGVmYXVs
dFZhbHVlID0gKGJ1ZmZlciwgb2Zmc2V0KSA9PiBidWZmZXIuc2V0KG9mZnNldCwgMCk7Ci0gICAg
ICAgICAgICAgICAgdHlwZS5mb3JtYXRWYWx1ZUZyb21JbnRMaXRlcmFsID0gdmFsdWUgPT4gdmFs
dWUgfCAwOwotICAgICAgICAgICAgICAgIHR5cGUuZm9ybWF0VmFsdWVGcm9tVWludExpdGVyYWwg
PSB2YWx1ZSA9PiB2YWx1ZSB8IDA7Ci0gICAgICAgICAgICAgICAgdHlwZS5hbGxWYWx1ZXMgPSBm
dW5jdGlvbiooKSB7IAotICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSAw
eGZmZmZmZmZmOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGkg
fCAwOwotICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQge3ZhbHVlOiB2YWx1ZSwgbmFtZTog
dmFsdWV9OwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfTsKKyAgICAg
ICAgICAgICAgICB0aGlzLnZvaWQgPSB0eXBlOworICAgICAgICAgICAgICAgIHR5cGUuc2l6ZSA9
IDA7CisgICAgICAgICAgICAgICAgdHlwZS5wb3B1bGF0ZURlZmF1bHRWYWx1ZSA9ICgpID0+IHsg
fTsKICAgICAgICAgICAgIH0pOwogCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCi0gICAgICAgICAg
ICAibmF0aXZlIHR5cGVkZWYgdWludCIsCisgICAgICAgICAgICAibmF0aXZlIHR5cGVkZWYgYm9v
bCIsCiAgICAgICAgICAgICB0eXBlID0+IHsKLSAgICAgICAgICAgICAgICB0aGlzLnVpbnQgPSB0
eXBlOworICAgICAgICAgICAgICAgIHRoaXMuYm9vbCA9IHR5cGU7CiAgICAgICAgICAgICAgICAg
dHlwZS5pc1ByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgdHlwZS5pc0ludCA9IHRy
dWU7Ci0gICAgICAgICAgICAgICAgdHlwZS5pc051bWJlciA9IHRydWU7Ci0gICAgICAgICAgICAg
ICAgdHlwZS5pc1NpZ25lZCA9IGZhbHNlOwotICAgICAgICAgICAgICAgIHR5cGUuY2FuUmVwcmVz
ZW50ID0gdmFsdWUgPT4gaXNCaXR3aXNlRXF1aXZhbGVudCh2YWx1ZSA+Pj4gMCwgdmFsdWUpOwog
ICAgICAgICAgICAgICAgIHR5cGUuc2l6ZSA9IDE7Ci0gICAgICAgICAgICAgICAgdHlwZS5kZWZh
dWx0VmFsdWUgPSAwOwotICAgICAgICAgICAgICAgIHR5cGUuY3JlYXRlTGl0ZXJhbCA9IChvcmln
aW4sIHZhbHVlKSA9PiBJbnRMaXRlcmFsLndpdGhUeXBlKG9yaWdpbiwgdmFsdWUgPj4+IDAsIHR5
cGUpOwotICAgICAgICAgICAgICAgIHR5cGUuc3VjY2Vzc29yVmFsdWUgPSB2YWx1ZSA9PiAodmFs
dWUgKyAxKSA+Pj4gMDsKLSAgICAgICAgICAgICAgICB0eXBlLnZhbHVlc0VxdWFsID0gKGEsIGIp
ID0+IGEgPT09IGI7Ci0gICAgICAgICAgICAgICAgdHlwZS5wb3B1bGF0ZURlZmF1bHRWYWx1ZSA9
IChidWZmZXIsIG9mZnNldCkgPT4gYnVmZmVyLnNldChvZmZzZXQsIDApOwotICAgICAgICAgICAg
ICAgIHR5cGUuZm9ybWF0VmFsdWVGcm9tSW50TGl0ZXJhbCA9IHZhbHVlID0+IHZhbHVlID4+PiAw
OwotICAgICAgICAgICAgICAgIHR5cGUuZm9ybWF0VmFsdWVGcm9tVWludExpdGVyYWwgPSB2YWx1
ZSA9PiB2YWx1ZSA+Pj4gMDsKLSAgICAgICAgICAgICAgICB0eXBlLmFsbFZhbHVlcyA9IGZ1bmN0
aW9uKigpIHsgCi0gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IDB4ZmZm
ZmZmZmY7ICsraSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHt2YWx1ZTogaSwgbmFt
ZTogaX07Ci0gICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICB0eXBlLnBvcHVsYXRl
RGVmYXVsdFZhbHVlID0gKGJ1ZmZlciwgb2Zmc2V0KSA9PiBidWZmZXIuc2V0KG9mZnNldCwgZmFs
c2UpOwogICAgICAgICAgICAgfSk7CiAKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAg
ICAgICJuYXRpdmUgdHlwZWRlZiB1Y2hhciIsCiAgICAgICAgICAgICB0eXBlID0+IHsKICAgICAg
ICAgICAgICAgICB0aGlzLnVjaGFyID0gdHlwZTsKKyAgICAgICAgICAgICAgICB0eXBlLmlzUHJp
bWl0aXZlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICB0eXBlLmlzSW50ID0gdHJ1ZTsKICAgICAg
ICAgICAgICAgICB0eXBlLmlzTnVtYmVyID0gdHJ1ZTsKICAgICAgICAgICAgICAgICB0eXBlLmlz
U2lnbmVkID0gZmFsc2U7CkBAIC0xMjYsMTQ5ICsxNDMsMjk1IEBAIGNsYXNzIEludHJpbnNpY3Mg
ewogICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICB9KTsKIAorCisgICAgICAgICAgICB0
aGlzLl9tYXAuc2V0KAorICAgICAgICAgICAgICJuYXRpdmUgdHlwZWRlZiB1c2hvcnQiLAorICAg
ICAgICAgICAgIHR5cGUgPT4geworICAgICAgICAgICAgICAgICB0aGlzLnVzaG9ydCA9IHR5cGU7
CisgICAgICAgICAgICAgICAgIHR5cGUuaXNQcmltaXRpdmUgPSB0cnVlOworICAgICAgICAgICAg
ICAgICB0eXBlLmlzSW50ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5pc051bWJlciA9
IHRydWU7CisgICAgICAgICAgICAgICAgIHR5cGUuaXNTaWduZWQgPSBmYWxzZTsKKyAgICAgICAg
ICAgICAgICAgdHlwZS5jYW5SZXByZXNlbnQgPSB2YWx1ZSA9PiBpc0JpdHdpc2VFcXVpdmFsZW50
KHZhbHVlICYgMHhmZmZmLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgIHR5cGUuc2l6ZSA9IDE7
CisgICAgICAgICAgICAgICAgIHR5cGUuZGVmYXVsdFZhbHVlID0gMDsKKyAgICAgICAgICAgICAg
ICAgdHlwZS5jcmVhdGVMaXRlcmFsID0gKG9yaWdpbiwgdmFsdWUpID0+IEludExpdGVyYWwud2l0
aFR5cGUob3JpZ2luLCB2YWx1ZSAmIDB4ZmZmZiwgdHlwZSk7CisgICAgICAgICAgICAgICAgIHR5
cGUuc3VjY2Vzc29yVmFsdWUgPSB2YWx1ZSA9PiAodmFsdWUgKyAxKSAmIDB4ZmZmZjsKKyAgICAg
ICAgICAgICAgICAgdHlwZS52YWx1ZXNFcXVhbCA9IChhLCBiKSA9PiBhID09PSBiOworICAgICAg
ICAgICAgICAgICB0eXBlLnBvcHVsYXRlRGVmYXVsdFZhbHVlID0gKGJ1ZmZlciwgb2Zmc2V0KSA9
PiBidWZmZXIuc2V0KG9mZnNldCwgMCk7CisgICAgICAgICAgICAgICAgIHR5cGUuZm9ybWF0VmFs
dWVGcm9tSW50TGl0ZXJhbCA9IHZhbHVlID0+IHZhbHVlICYgMHhmZmZmOworICAgICAgICAgICAg
ICAgICB0eXBlLmZvcm1hdFZhbHVlRnJvbVVpbnRMaXRlcmFsID0gdmFsdWUgPT4gdmFsdWUgJiAw
eGZmZmY7CisgICAgICAgICAgICAgICAgIHR5cGUuYWxsVmFsdWVzID0gZnVuY3Rpb24qKCkgewor
ICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gMHhmZmZmOyArK2kpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQge3ZhbHVlOiBpLCBuYW1lOiBpfTsKKyAgICAg
ICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICB9KTsKKwogICAgICAgICB0aGlzLl9tYXAuc2V0
KAotICAgICAgICAgICAgIm5hdGl2ZSB0eXBlZGVmIGZsb2F0IiwKLSAgICAgICAgICAgIHR5cGUg
PT4gewotICAgICAgICAgICAgICAgIHRoaXMuZmxvYXQgPSB0eXBlOwotICAgICAgICAgICAgICAg
IHR5cGUuaXNQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICAgICAgICAgIHR5cGUuc2l6ZSA9IDE7
Ci0gICAgICAgICAgICAgICAgdHlwZS5pc0Zsb2F0aW5nID0gdHJ1ZTsKLSAgICAgICAgICAgICAg
ICB0eXBlLmlzTnVtYmVyID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB0eXBlLmNhblJlcHJlc2Vu
dCA9IHZhbHVlID0+IGlzQml0d2lzZUVxdWl2YWxlbnQoTWF0aC5mcm91bmQodmFsdWUpLCB2YWx1
ZSk7Ci0gICAgICAgICAgICAgICAgdHlwZS5wb3B1bGF0ZURlZmF1bHRWYWx1ZSA9IChidWZmZXIs
IG9mZnNldCkgPT4gYnVmZmVyLnNldChvZmZzZXQsIDApOwotICAgICAgICAgICAgICAgIHR5cGUu
Zm9ybWF0VmFsdWVGcm9tSW50TGl0ZXJhbCA9IHZhbHVlID0+IHZhbHVlOwotICAgICAgICAgICAg
ICAgIHR5cGUuZm9ybWF0VmFsdWVGcm9tVWludExpdGVyYWwgPSB2YWx1ZSA9PiB2YWx1ZTsKLSAg
ICAgICAgICAgICAgICB0eXBlLmZvcm1hdFZhbHVlRnJvbUZsb2F0TGl0ZXJhbCA9IHZhbHVlID0+
IE1hdGguZnJvdW5kKHZhbHVlKTsKLSAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICJuYXRp
dmUgdHlwZWRlZiB1aW50IiwKKyAgICAgICAgICAgICB0eXBlID0+IHsKKyAgICAgICAgICAgICAg
ICAgdGhpcy51aW50ID0gdHlwZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5pc1ByaW1pdGl2ZSA9
IHRydWU7CisgICAgICAgICAgICAgICAgIHR5cGUuaXNJbnQgPSB0cnVlOworICAgICAgICAgICAg
ICAgICB0eXBlLmlzTnVtYmVyID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5pc1NpZ25l
ZCA9IGZhbHNlOworICAgICAgICAgICAgICAgICB0eXBlLmNhblJlcHJlc2VudCA9IHZhbHVlID0+
IGlzQml0d2lzZUVxdWl2YWxlbnQodmFsdWUgPj4+IDAsIHZhbHVlKTsKKyAgICAgICAgICAgICAg
ICAgdHlwZS5zaXplID0gMTsKKyAgICAgICAgICAgICAgICAgdHlwZS5kZWZhdWx0VmFsdWUgPSAw
OworICAgICAgICAgICAgICAgICB0eXBlLmNyZWF0ZUxpdGVyYWwgPSAob3JpZ2luLCB2YWx1ZSkg
PT4gSW50TGl0ZXJhbC53aXRoVHlwZShvcmlnaW4sIHZhbHVlID4+PiAwLCB0eXBlKTsKKyAgICAg
ICAgICAgICAgICAgdHlwZS5zdWNjZXNzb3JWYWx1ZSA9IHZhbHVlID0+ICh2YWx1ZSArIDEpID4+
PiAwOworICAgICAgICAgICAgICAgICB0eXBlLnZhbHVlc0VxdWFsID0gKGEsIGIpID0+IGEgPT09
IGI7CisgICAgICAgICAgICAgICAgIHR5cGUucG9wdWxhdGVEZWZhdWx0VmFsdWUgPSAoYnVmZmVy
LCBvZmZzZXQpID0+IGJ1ZmZlci5zZXQob2Zmc2V0LCAwKTsKKyAgICAgICAgICAgICAgICAgdHlw
ZS5mb3JtYXRWYWx1ZUZyb21JbnRMaXRlcmFsID0gdmFsdWUgPT4gdmFsdWUgPj4+IDA7CisgICAg
ICAgICAgICAgICAgIHR5cGUuZm9ybWF0VmFsdWVGcm9tVWludExpdGVyYWwgPSB2YWx1ZSA9PiB2
YWx1ZSA+Pj4gMDsKKyAgICAgICAgICAgICAgICAgdHlwZS5hbGxWYWx1ZXMgPSBmdW5jdGlvbioo
KSB7CisgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSAweGZmZmZmZmZm
OyArK2kpCisgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQge3ZhbHVlOiBpLCBuYW1lOiBp
fTsKKyAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICB9KTsKIAogICAgICAgICB0aGlz
Ll9tYXAuc2V0KAotICAgICAgICAgICAgIm5hdGl2ZSB0eXBlZGVmIGJvb2wiLAotICAgICAgICAg
ICAgdHlwZSA9PiB7Ci0gICAgICAgICAgICAgICAgdGhpcy5ib29sID0gdHlwZTsKLSAgICAgICAg
ICAgICAgICB0eXBlLmlzUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB0eXBlLnNp
emUgPSAxOwotICAgICAgICAgICAgICAgIHR5cGUucG9wdWxhdGVEZWZhdWx0VmFsdWUgPSAoYnVm
ZmVyLCBvZmZzZXQpID0+IGJ1ZmZlci5zZXQob2Zmc2V0LCBmYWxzZSk7Ci0gICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgICAibmF0aXZlIHR5cGVkZWYgY2hhciIsCisgICAgICAgICAgICAgdHlw
ZSA9PiB7CisgICAgICAgICAgICAgICAgIHRoaXMuY2hhciA9IHR5cGU7CisgICAgICAgICAgICAg
ICAgIHR5cGUuaXNQcmltaXRpdmUgPSB0cnVlOworICAgICAgICAgICAgICAgICB0eXBlLmlzSW50
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5pc051bWJlciA9IHRydWU7CisgICAgICAg
ICAgICAgICAgIHR5cGUuaXNTaWduZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICB0eXBlLmNh
blJlcHJlc2VudCA9IHZhbHVlID0+IGlzQml0d2lzZUVxdWl2YWxlbnQoY2FzdChJbnQ4QXJyYXks
IHZhbHVlKSwgdmFsdWUpOworICAgICAgICAgICAgICAgICB0eXBlLnNpemUgPSAxOworICAgICAg
ICAgICAgICAgICB0eXBlLmRlZmF1bHRWYWx1ZSA9IDA7CisgICAgICAgICAgICAgICAgIHR5cGUu
Y3JlYXRlTGl0ZXJhbCA9IChvcmlnaW4sIHZhbHVlKSA9PiBJbnRMaXRlcmFsLndpdGhUeXBlKG9y
aWdpbiwgY2FzdChJbnQ4QXJyYXksIHZhbHVlKSwgdHlwZSk7CisgICAgICAgICAgICAgICAgIHR5
cGUuc3VjY2Vzc29yVmFsdWUgPSB2YWx1ZSA9PiBjYXN0KEludDhBcnJheSwgdmFsdWUgKyAxKTsK
KyAgICAgICAgICAgICAgICAgdHlwZS52YWx1ZXNFcXVhbCA9IChhLCBiKSA9PiBhID09PSBiOwor
ICAgICAgICAgICAgICAgICB0eXBlLnBvcHVsYXRlRGVmYXVsdFZhbHVlID0gKGJ1ZmZlciwgb2Zm
c2V0KSA9PiBidWZmZXIuc2V0KG9mZnNldCwgMCk7CisgICAgICAgICAgICAgICAgIHR5cGUuZm9y
bWF0VmFsdWVGcm9tSW50TGl0ZXJhbCA9IHZhbHVlID0+IGNhc3QoSW50OEFycmF5LCB2YWx1ZSk7
CisgICAgICAgICAgICAgICAgIHR5cGUuZm9ybWF0VmFsdWVGcm9tVWludExpdGVyYWwgPSB2YWx1
ZSA9PiBjYXN0KEludDhBcnJheSwgdmFsdWUpOworICAgICAgICAgICAgICAgICB0eXBlLmFsbFZh
bHVlcyA9IGZ1bmN0aW9uKigpIHsKKyAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAw
OyBpIDw9IDB4ZmY7ICsraSkgeworICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9
IGNhc3QoSW50OEFycmF5LCBpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCB7dmFs
dWU6IHZhbHVlLCBuYW1lOiB2YWx1ZX07CisgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgIH07CisgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgdGhpcy5fbWFwLnNldCgK
KyAgICAgICAgICAgICAibmF0aXZlIHR5cGVkZWYgc2hvcnQiLAorICAgICAgICAgICAgIHR5cGUg
PT4geworICAgICAgICAgICAgICAgICB0aGlzLnNob3J0ID0gdHlwZTsKKyAgICAgICAgICAgICAg
ICAgdHlwZS5pc1ByaW1pdGl2ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgIHR5cGUuaXNJbnQg
PSB0cnVlOworICAgICAgICAgICAgICAgICB0eXBlLmlzTnVtYmVyID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICAgdHlwZS5pc1NpZ25lZCA9IHRydWU7CisgICAgICAgICAgICAgICAgIHR5cGUuY2Fu
UmVwcmVzZW50ID0gdmFsdWUgPT4gaXNCaXR3aXNlRXF1aXZhbGVudChjYXN0KEludDE2QXJyYXks
IHZhbHVlKSwgdmFsdWUpOworICAgICAgICAgICAgICAgICB0eXBlLnNpemUgPSAxOworICAgICAg
ICAgICAgICAgICB0eXBlLmRlZmF1bHRWYWx1ZSA9IDA7CisgICAgICAgICAgICAgICAgIHR5cGUu
Y3JlYXRlTGl0ZXJhbCA9IChvcmlnaW4sIHZhbHVlKSA9PiBJbnRMaXRlcmFsLndpdGhUeXBlKG9y
aWdpbiwgY2FzdChJbnQxNkFycmF5LCB2YWx1ZSksIHR5cGUpOworICAgICAgICAgICAgICAgICB0
eXBlLnN1Y2Nlc3NvclZhbHVlID0gdmFsdWUgPT4gY2FzdChJbnQxNkFycmF5LCB2YWx1ZSArIDEp
OworICAgICAgICAgICAgICAgICB0eXBlLnZhbHVlc0VxdWFsID0gKGEsIGIpID0+IGEgPT09IGI7
CisgICAgICAgICAgICAgICAgIHR5cGUucG9wdWxhdGVEZWZhdWx0VmFsdWUgPSAoYnVmZmVyLCBv
ZmZzZXQpID0+IGJ1ZmZlci5zZXQob2Zmc2V0LCAwKTsKKyAgICAgICAgICAgICAgICAgdHlwZS5m
b3JtYXRWYWx1ZUZyb21JbnRMaXRlcmFsID0gdmFsdWUgPT4gY2FzdChJbnQxNkFycmF5LCB2YWx1
ZSk7CisgICAgICAgICAgICAgICAgIHR5cGUuZm9ybWF0VmFsdWVGcm9tVWludExpdGVyYWwgPSB2
YWx1ZSA9PiBjYXN0KEludDE2QXJyYXksIHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgdHlwZS5h
bGxWYWx1ZXMgPSBmdW5jdGlvbiooKSB7CisgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBp
ID0gMDsgaSA8PSAweGZmZmY7ICsraSkgeworICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB2
YWx1ZSA9IGNhc3QoSW50MTZBcnJheSwgaSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgeWll
bGQge3ZhbHVlOiB2YWx1ZSwgbmFtZTogdmFsdWV9OworICAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgIH0pOworCisgICAgICAgIHRoaXMuX21h
cC5zZXQoCisgICAgICAgICAgICAgIm5hdGl2ZSB0eXBlZGVmIGludCIsCisgICAgICAgICAgICAg
dHlwZSA9PiB7CisgICAgICAgICAgICAgICAgIHRoaXMuaW50ID0gdHlwZTsKKyAgICAgICAgICAg
ICAgICAgdHlwZS5pc1ByaW1pdGl2ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgIHR5cGUuaXNJ
bnQgPSB0cnVlOworICAgICAgICAgICAgICAgICB0eXBlLmlzTnVtYmVyID0gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICAgdHlwZS5pc1NpZ25lZCA9IHRydWU7CisgICAgICAgICAgICAgICAgIHR5cGUu
Y2FuUmVwcmVzZW50ID0gdmFsdWUgPT4gaXNCaXR3aXNlRXF1aXZhbGVudCh2YWx1ZSB8IDAsIHZh
bHVlKTsKKyAgICAgICAgICAgICAgICAgdHlwZS5zaXplID0gMTsKKyAgICAgICAgICAgICAgICAg
dHlwZS5kZWZhdWx0VmFsdWUgPSAwOworICAgICAgICAgICAgICAgICB0eXBlLmNyZWF0ZUxpdGVy
YWwgPSAob3JpZ2luLCB2YWx1ZSkgPT4gSW50TGl0ZXJhbC53aXRoVHlwZShvcmlnaW4sIHZhbHVl
IHwgMCwgdHlwZSk7CisgICAgICAgICAgICAgICAgIHR5cGUuc3VjY2Vzc29yVmFsdWUgPSB2YWx1
ZSA9PiAodmFsdWUgKyAxKSB8IDA7CisgICAgICAgICAgICAgICAgIHR5cGUudmFsdWVzRXF1YWwg
PSAoYSwgYikgPT4gYSA9PT0gYjsKKyAgICAgICAgICAgICAgICAgdHlwZS5wb3B1bGF0ZURlZmF1
bHRWYWx1ZSA9IChidWZmZXIsIG9mZnNldCkgPT4gYnVmZmVyLnNldChvZmZzZXQsIDApOworICAg
ICAgICAgICAgICAgICB0eXBlLmZvcm1hdFZhbHVlRnJvbUludExpdGVyYWwgPSB2YWx1ZSA9PiB2
YWx1ZSB8IDA7CisgICAgICAgICAgICAgICAgIHR5cGUuZm9ybWF0VmFsdWVGcm9tVWludExpdGVy
YWwgPSB2YWx1ZSA9PiB2YWx1ZSB8IDA7CisgICAgICAgICAgICAgICAgIHR5cGUuYWxsVmFsdWVz
ID0gZnVuY3Rpb24qKCkgeworICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkg
PD0gMHhmZmZmZmZmZjsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVl
ID0gaSB8IDA7CisgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQge3ZhbHVlOiB2YWx1ZSwg
bmFtZTogdmFsdWV9OworICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICB9
OworICAgICAgICAgICAgIH0pOworCisgICAgICAgICB0aGlzLl9tYXAuc2V0KAorICAgICAgICAg
ICAgICJuYXRpdmUgdHlwZWRlZiBoYWxmIiwKKyAgICAgICAgICAgICB0eXBlID0+IHsKKyAgICAg
ICAgICAgICAgICAgdGhpcy5oYWxmID0gdHlwZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5pc1By
aW1pdGl2ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgIHR5cGUuc2l6ZSA9IDE7CisgICAgICAg
ICAgICAgICAgIHR5cGUuaXNGbG9hdGluZyA9IHRydWU7CisgICAgICAgICAgICAgICAgIHR5cGUu
aXNOdW1iZXIgPSB0cnVlOworICAgICAgICAgICAgICAgICB0eXBlLmNhblJlcHJlc2VudCA9IHZh
bHVlID0+IGlzQml0d2lzZUVxdWl2YWxlbnQoY2FzdFRvSGFsZih2YWx1ZSksIHZhbHVlKTsKKyAg
ICAgICAgICAgICAgICAgdHlwZS5wb3B1bGF0ZURlZmF1bHRWYWx1ZSA9IChidWZmZXIsIG9mZnNl
dCkgPT4gYnVmZmVyLnNldChvZmZzZXQsIDApOworICAgICAgICAgICAgICAgICB0eXBlLmZvcm1h
dFZhbHVlRnJvbUludExpdGVyYWwgPSB2YWx1ZSA9PiB2YWx1ZTsKKyAgICAgICAgICAgICAgICAg
dHlwZS5mb3JtYXRWYWx1ZUZyb21VaW50TGl0ZXJhbCA9IHZhbHVlID0+IHZhbHVlOworICAgICAg
ICAgICAgICAgICB0eXBlLmZvcm1hdFZhbHVlRnJvbUZsb2F0TGl0ZXJhbCA9IHZhbHVlID0+IGNh
c3RUb0hhbGYodmFsdWUpOworICAgICAgICAgICAgIH0pOworCisgICAgICAgICB0aGlzLl9tYXAu
c2V0KAorICAgICAgICAgICAgICJuYXRpdmUgdHlwZWRlZiBmbG9hdCIsCisgICAgICAgICAgICAg
dHlwZSA9PiB7CisgICAgICAgICAgICAgICAgIHRoaXMuZmxvYXQgPSB0eXBlOworICAgICAgICAg
ICAgICAgICB0eXBlLmlzUHJpbWl0aXZlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5z
aXplID0gMTsKKyAgICAgICAgICAgICAgICAgdHlwZS5pc0Zsb2F0aW5nID0gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICAgdHlwZS5pc051bWJlciA9IHRydWU7CisgICAgICAgICAgICAgICAgIHR5cGUu
Y2FuUmVwcmVzZW50ID0gdmFsdWUgPT4gaXNCaXR3aXNlRXF1aXZhbGVudChNYXRoLmZyb3VuZCh2
YWx1ZSksIHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgdHlwZS5wb3B1bGF0ZURlZmF1bHRWYWx1
ZSA9IChidWZmZXIsIG9mZnNldCkgPT4gYnVmZmVyLnNldChvZmZzZXQsIDApOworICAgICAgICAg
ICAgICAgICB0eXBlLmZvcm1hdFZhbHVlRnJvbUludExpdGVyYWwgPSB2YWx1ZSA9PiB2YWx1ZTsK
KyAgICAgICAgICAgICAgICAgdHlwZS5mb3JtYXRWYWx1ZUZyb21VaW50TGl0ZXJhbCA9IHZhbHVl
ID0+IHZhbHVlOworICAgICAgICAgICAgICAgICB0eXBlLmZvcm1hdFZhbHVlRnJvbUZsb2F0TGl0
ZXJhbCA9IHZhbHVlID0+IE1hdGguZnJvdW5kKHZhbHVlKTsKKyAgICAgICAgICAgICB9KTsKKwor
ICAgICAgICB0aGlzLl9tYXAuc2V0KAorICAgICAgICAgICAgICJuYXRpdmUgdHlwZWRlZiBhdG9t
aWNfaW50IiwKKyAgICAgICAgICAgICB0eXBlID0+IHsKKyAgICAgICAgICAgICAgICAgdGhpcy5h
dG9taWNfaW50ID0gdHlwZTsKKyAgICAgICAgICAgICAgICAgLy8gRklYTUU6IEZpZ3VyZSBvdXQg
d2hhdCB0byBwdXQgaGVyZS4KKyAgICAgICAgICAgICB9KTsKKworICAgICAgICB0aGlzLl9tYXAu
c2V0KAorICAgICAgICAgICAgICJuYXRpdmUgdHlwZWRlZiBhdG9taWNfdWludCIsCisgICAgICAg
ICAgICAgdHlwZSA9PiB7CisgICAgICAgICAgICAgICAgIHRoaXMuYXRvbWljX3VpbnQgPSB0eXBl
OworICAgICAgICAgICAgICAgICAvLyBGSVhNRTogRmlndXJlIG91dCB3aGF0IHRvIHB1dCBoZXJl
LgorICAgICAgICAgICAgIH0pOwogCiAgICAgICAgIGZvciAobGV0IHZlY3RvclR5cGUgb2YgVmVj
dG9yRWxlbWVudFR5cGVzKSB7Ci0gICAgICAgICAgICBmb3IgKGxldCB2ZWN0b3JTaXplIG9mIFZl
Y3RvckVsZW1lbnRTaXplcykKLSAgICAgICAgICAgICAgICB0aGlzLl9tYXAuc2V0KGBuYXRpdmUg
dHlwZWRlZiB2ZWN0b3I8JHt2ZWN0b3JUeXBlfSwgJHt2ZWN0b3JTaXplfT5gLCB0eXBlID0+IHt9
KTsKKyAgICAgICAgICAgIGZvciAobGV0IHZlY3RvclNpemUgb2YgVmVjdG9yRWxlbWVudFNpemVz
KSB7CisgICAgICAgICAgICAgICAgdGhpcy5fbWFwLnNldChgbmF0aXZlIHR5cGVkZWYgdmVjdG9y
PCR7dmVjdG9yVHlwZX0sICR7dmVjdG9yU2l6ZX0+YCwgdHlwZSA9PiB7CisgICAgICAgICAgICAg
ICAgICAgIHRoaXNbYHZlY3Rvcjwke3ZlY3RvclR5cGV9LCAke3ZlY3RvclNpemV9PmBdID0gdHlw
ZTsKKyAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IEZpZ3VyZSBvdXQgd2hhdCB0byBwdXQg
aGVyZS4KKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAg
ICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBvcGVy
YXRvciBpbnQodWludCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAg
ZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbdmFsdWVdKSA9PiBFUHRyLmJveCh2YWx1ZS5sb2FkVmFs
dWUoKSB8IDApOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21h
cC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIG9wZXJhdG9yIGludCh1Y2hhcikiLAogICAgICAg
ICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChb
dmFsdWVdKSA9PiBFUHRyLmJveCh2YWx1ZS5sb2FkVmFsdWUoKSB8IDApOwogICAgICAgICAgICAg
fSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0
aXZlIG9wZXJhdG9yIGludChmbG9hdCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAg
ICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbdmFsdWVdKSA9PiBFUHRyLmJveCh2YWx1
ZS5sb2FkVmFsdWUoKSB8IDApOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAg
IHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIG9wZXJhdG9yIHVpbnQoaW50KSIs
CiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0
aW9uID0gKFt2YWx1ZV0pID0+IEVQdHIuYm94KHZhbHVlLmxvYWRWYWx1ZSgpID4+PiAwKTsKICAg
ICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAg
ICAgICAgIm5hdGl2ZSBvcGVyYXRvciB1aW50KHVjaGFyKSIsCiAgICAgICAgICAgICBmdW5jID0+
IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFt2YWx1ZV0pID0+IEVQ
dHIuYm94KHZhbHVlLmxvYWRWYWx1ZSgpID4+PiAwKTsKICAgICAgICAgICAgIH0pOwotICAgICAg
ICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBvcGVyYXRv
ciB1aW50KGZsb2F0KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBm
dW5jLmltcGxlbWVudGF0aW9uID0gKFt2YWx1ZV0pID0+IEVQdHIuYm94KHZhbHVlLmxvYWRWYWx1
ZSgpID4+PiAwKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9t
YXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBvcGVyYXRvciB1Y2hhcihpbnQpIiwKICAgICAg
ICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAo
W3ZhbHVlXSkgPT4gRVB0ci5ib3godmFsdWUubG9hZFZhbHVlKCkgJiAweGZmKTsKICAgICAgICAg
ICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAg
Im5hdGl2ZSBvcGVyYXRvciB1Y2hhcih1aW50KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAg
ICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFt2YWx1ZV0pID0+IEVQdHIuYm94
KHZhbHVlLmxvYWRWYWx1ZSgpICYgMHhmZik7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgCisK
ICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUgb3BlcmF0b3IgdWNo
YXIoZmxvYXQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMu
aW1wbGVtZW50YXRpb24gPSAoW3ZhbHVlXSkgPT4gRVB0ci5ib3godmFsdWUubG9hZFZhbHVlKCkg
JiAweGZmKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAu
c2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBvcGVyYXRvciBmbG9hdChpbnQpIiwKICAgICAgICAg
ICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW3Zh
bHVlXSkgPT4gRVB0ci5ib3goTWF0aC5mcm91bmQodmFsdWUubG9hZFZhbHVlKCkpKTsKICAgICAg
ICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAg
ICAgIm5hdGl2ZSBvcGVyYXRvciBmbG9hdCh1aW50KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsK
ICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFt2YWx1ZV0pID0+IEVQdHIu
Ym94KE1hdGguZnJvdW5kKHZhbHVlLmxvYWRWYWx1ZSgpKSk7CiAgICAgICAgICAgICB9KTsKLSAg
ICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUgb3Bl
cmF0b3IgZmxvYXQodWNoYXIpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAg
ICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW3ZhbHVlXSkgPT4gRVB0ci5ib3goTWF0aC5mcm91
bmQodmFsdWUubG9hZFZhbHVlKCkpKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAg
ICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBpbnQgb3BlcmF0b3IrKGlu
dCxpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1w
bGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0
ci5ib3goKGxlZnQubG9hZFZhbHVlKCkgKyByaWdodC5sb2FkVmFsdWUoKSkgfCAwKTsKICAgICAg
ICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAg
ICAgIm5hdGl2ZSB1aW50IG9wZXJhdG9yKyh1aW50LHVpbnQpIiwKICAgICAgICAgICAgIGZ1bmMg
PT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0
XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3goKGxlZnQubG9hZFZhbHVlKCkgKyBy
aWdodC5sb2FkVmFsdWUoKSkgPj4+IDApOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAg
ICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIGZsb2F0IG9wZXJhdG9y
KyhmbG9hdCxmbG9hdCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAg
ZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PgogICAgICAgICAgICAgICAg
ICAgICBFUHRyLmJveChNYXRoLmZyb3VuZChsZWZ0LmxvYWRWYWx1ZSgpICsgcmlnaHQubG9hZFZh
bHVlKCkpKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAu
c2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBpbnQgb3BlcmF0b3ItKGludCxpbnQpIiwKICAgICAg
ICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAo
W2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3goKGxlZnQubG9h
ZFZhbHVlKCkgLSByaWdodC5sb2FkVmFsdWUoKSkgfCAwKTsKICAgICAgICAgICAgIH0pOwotICAg
ICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSB1aW50
IG9wZXJhdG9yLSh1aW50LHVpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAg
ICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAg
ICAgICAgICAgICAgRVB0ci5ib3goKGxlZnQubG9hZFZhbHVlKCkgLSByaWdodC5sb2FkVmFsdWUo
KSkgPj4+IDApOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21h
cC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIGZsb2F0IG9wZXJhdG9yLShmbG9hdCxmbG9hdCki
LAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRh
dGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PgogICAgICAgICAgICAgICAgICAgICBFUHRyLmJveChN
YXRoLmZyb3VuZChsZWZ0LmxvYWRWYWx1ZSgpIC0gcmlnaHQubG9hZFZhbHVlKCkpKTsKICAgICAg
ICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAg
ICAgIm5hdGl2ZSBpbnQgb3BlcmF0b3IqKGludCxpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4g
ewpAQCAtMjc2LDIyOSArNDM5LDIyOSBAQCBjbGFzcyBJbnRyaW5zaWNzIHsKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIEVQdHIuYm94KChsZWZ0LmxvYWRWYWx1ZSgpICogcmlnaHQubG9hZFZh
bHVlKCkpIHwgMCk7CiAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgIH0pOwotICAgICAg
ICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSB1aW50IG9w
ZXJhdG9yKih1aW50LHVpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAg
ICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAg
ICAgICAgICAgRVB0ci5ib3goKGxlZnQubG9hZFZhbHVlKCkgKiByaWdodC5sb2FkVmFsdWUoKSkg
Pj4+IDApOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5z
ZXQoCiAgICAgICAgICAgICAibmF0aXZlIGZsb2F0IG9wZXJhdG9yKihmbG9hdCxmbG9hdCkiLAog
ICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlv
biA9IChbbGVmdCwgcmlnaHRdKSA9PgogICAgICAgICAgICAgICAgICAgICBFUHRyLmJveChNYXRo
LmZyb3VuZChsZWZ0LmxvYWRWYWx1ZSgpICogcmlnaHQubG9hZFZhbHVlKCkpKTsKICAgICAgICAg
ICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAg
Im5hdGl2ZSBpbnQgb3BlcmF0b3IvKGludCxpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewog
ICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4K
ICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3goKGxlZnQubG9hZFZhbHVlKCkgLyByaWdodC5s
b2FkVmFsdWUoKSkgfCAwKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0
aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSB1aW50IG9wZXJhdG9yLyh1aW50LHVp
bnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVt
ZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5i
b3goKGxlZnQubG9hZFZhbHVlKCkgLyByaWdodC5sb2FkVmFsdWUoKSkgPj4+IDApOwogICAgICAg
ICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAg
ICAibmF0aXZlIGludCBvcGVyYXRvciYoaW50LGludCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7
CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9
PgogICAgICAgICAgICAgICAgICAgICBFUHRyLmJveChsZWZ0LmxvYWRWYWx1ZSgpICYgcmlnaHQu
bG9hZFZhbHVlKCkpOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMu
X21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIHVpbnQgb3BlcmF0b3ImKHVpbnQsdWludCki
LAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRh
dGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PgogICAgICAgICAgICAgICAgICAgICBFUHRyLmJveCgo
bGVmdC5sb2FkVmFsdWUoKSAmIHJpZ2h0LmxvYWRWYWx1ZSgpKSA+Pj4gMCk7CiAgICAgICAgICAg
ICB9KTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJu
YXRpdmUgaW50IG9wZXJhdG9yfChpbnQsaW50KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAg
ICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+CiAg
ICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KGxlZnQubG9hZFZhbHVlKCkgfCByaWdodC5sb2Fk
VmFsdWUoKSk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFw
LnNldCgKICAgICAgICAgICAgICJuYXRpdmUgdWludCBvcGVyYXRvcnwodWludCx1aW50KSIsCiAg
ICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9u
ID0gKFtsZWZ0LCByaWdodF0pID0+CiAgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KChsZWZ0
LmxvYWRWYWx1ZSgpIHwgcmlnaHQubG9hZFZhbHVlKCkpID4+PiAwKTsKICAgICAgICAgICAgIH0p
OwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2
ZSBpbnQgb3BlcmF0b3JeKGludCxpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAg
ICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAg
ICAgICAgICAgICAgICAgRVB0ci5ib3gobGVmdC5sb2FkVmFsdWUoKSBeIHJpZ2h0LmxvYWRWYWx1
ZSgpKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0
KAogICAgICAgICAgICAgIm5hdGl2ZSB1aW50IG9wZXJhdG9yXih1aW50LHVpbnQpIiwKICAgICAg
ICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAo
W2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3goKGxlZnQubG9h
ZFZhbHVlKCkgXiByaWdodC5sb2FkVmFsdWUoKSkgPj4+IDApOwogICAgICAgICAgICAgfSk7Ci0g
ICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIGlu
dCBvcGVyYXRvcjw8KGludCx1aW50KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAg
ICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+CiAgICAgICAg
ICAgICAgICAgICAgIEVQdHIuYm94KGxlZnQubG9hZFZhbHVlKCkgPDwgcmlnaHQubG9hZFZhbHVl
KCkpOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQo
CiAgICAgICAgICAgICAibmF0aXZlIHVpbnQgb3BlcmF0b3I8PCh1aW50LHVpbnQpIiwKICAgICAg
ICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAo
W2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3goKGxlZnQubG9h
ZFZhbHVlKCkgPDwgcmlnaHQubG9hZFZhbHVlKCkpID4+PiAwKTsKICAgICAgICAgICAgIH0pOwot
ICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBp
bnQgb3BlcmF0b3I+PihpbnQsdWludCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAg
ICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PgogICAgICAg
ICAgICAgICAgICAgICBFUHRyLmJveChsZWZ0LmxvYWRWYWx1ZSgpID4+IHJpZ2h0LmxvYWRWYWx1
ZSgpKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0
KAogICAgICAgICAgICAgIm5hdGl2ZSB1aW50IG9wZXJhdG9yPj4odWludCx1aW50KSIsCiAgICAg
ICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0g
KFtsZWZ0LCByaWdodF0pID0+CiAgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KGxlZnQubG9h
ZFZhbHVlKCkgPj4+IHJpZ2h0LmxvYWRWYWx1ZSgpKTsKICAgICAgICAgICAgIH0pOwotICAgICAg
ICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBpbnQgb3Bl
cmF0b3J+KGludCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVu
Yy5pbXBsZW1lbnRhdGlvbiA9IChbdmFsdWVdKSA9PiBFUHRyLmJveCh+dmFsdWUubG9hZFZhbHVl
KCkpOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQo
CiAgICAgICAgICAgICAibmF0aXZlIHVpbnQgb3BlcmF0b3J+KHVpbnQpIiwKICAgICAgICAgICAg
IGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW3ZhbHVl
XSkgPT4gRVB0ci5ib3goKH52YWx1ZS5sb2FkVmFsdWUoKSkgPj4+IDApOwogICAgICAgICAgICAg
fSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0
aXZlIGZsb2F0IG9wZXJhdG9yLyhmbG9hdCxmbG9hdCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7
CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9
PgogICAgICAgICAgICAgICAgICAgICBFUHRyLmJveChNYXRoLmZyb3VuZChsZWZ0LmxvYWRWYWx1
ZSgpIC8gcmlnaHQubG9hZFZhbHVlKCkpKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwog
ICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBib29sIG9wZXJhdG9y
PT0oaW50LGludCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVu
Yy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PgogICAgICAgICAgICAgICAgICAg
ICBFUHRyLmJveChsZWZ0LmxvYWRWYWx1ZSgpID09IHJpZ2h0LmxvYWRWYWx1ZSgpKTsKICAgICAg
ICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAg
ICAgIm5hdGl2ZSBib29sIG9wZXJhdG9yPT0odWludCx1aW50KSIsCiAgICAgICAgICAgICBmdW5j
ID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdo
dF0pID0+CiAgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KGxlZnQubG9hZFZhbHVlKCkgPT0g
cmlnaHQubG9hZFZhbHVlKCkpOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAg
IHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIGJvb2wgb3BlcmF0b3I9PShib29s
LGJvb2wpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1w
bGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0
ci5ib3gobGVmdC5sb2FkVmFsdWUoKSA9PSByaWdodC5sb2FkVmFsdWUoKSk7CiAgICAgICAgICAg
ICB9KTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJu
YXRpdmUgYm9vbCBvcGVyYXRvcj09KGZsb2F0LGZsb2F0KSIsCiAgICAgICAgICAgICBmdW5jID0+
IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0p
ID0+CiAgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KGxlZnQubG9hZFZhbHVlKCkgPT0gcmln
aHQubG9hZFZhbHVlKCkpOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRo
aXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIGJvb2wgb3BlcmF0b3I8KGludCxpbnQp
IiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50
YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3go
bGVmdC5sb2FkVmFsdWUoKSA8IHJpZ2h0LmxvYWRWYWx1ZSgpKTsKICAgICAgICAgICAgIH0pOwot
ICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBi
b29sIG9wZXJhdG9yPCh1aW50LHVpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAg
ICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAg
ICAgICAgICAgICAgICAgRVB0ci5ib3gobGVmdC5sb2FkVmFsdWUoKSA8IHJpZ2h0LmxvYWRWYWx1
ZSgpKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0
KAogICAgICAgICAgICAgIm5hdGl2ZSBib29sIG9wZXJhdG9yPChmbG9hdCxmbG9hdCkiLAogICAg
ICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9
IChbbGVmdCwgcmlnaHRdKSA9PgogICAgICAgICAgICAgICAgICAgICBFUHRyLmJveChsZWZ0Lmxv
YWRWYWx1ZSgpIDwgcmlnaHQubG9hZFZhbHVlKCkpOwogICAgICAgICAgICAgfSk7Ci0gICAgICAg
IAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIGJvb2wgb3Bl
cmF0b3I8PShpbnQsaW50KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAg
ICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+CiAgICAgICAgICAgICAg
ICAgICAgIEVQdHIuYm94KGxlZnQubG9hZFZhbHVlKCkgPD0gcmlnaHQubG9hZFZhbHVlKCkpOwog
ICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAg
ICAgICAgICAibmF0aXZlIGJvb2wgb3BlcmF0b3I8PSh1aW50LHVpbnQpIiwKICAgICAgICAgICAg
IGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQs
IHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3gobGVmdC5sb2FkVmFsdWUo
KSA8PSByaWdodC5sb2FkVmFsdWUoKSk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgCisKICAg
ICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUgYm9vbCBvcGVyYXRvcjw9
KGZsb2F0LGZsb2F0KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBm
dW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+CiAgICAgICAgICAgICAgICAg
ICAgIEVQdHIuYm94KGxlZnQubG9hZFZhbHVlKCkgPD0gcmlnaHQubG9hZFZhbHVlKCkpOwogICAg
ICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAg
ICAgICAibmF0aXZlIGJvb2wgb3BlcmF0b3I+KGludCxpbnQpIiwKICAgICAgICAgICAgIGZ1bmMg
PT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0
XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3gobGVmdC5sb2FkVmFsdWUoKSA+IHJp
Z2h0LmxvYWRWYWx1ZSgpKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0
aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBib29sIG9wZXJhdG9yPih1aW50LHVp
bnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVt
ZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5i
b3gobGVmdC5sb2FkVmFsdWUoKSA+IHJpZ2h0LmxvYWRWYWx1ZSgpKTsKICAgICAgICAgICAgIH0p
OwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2
ZSBib29sIG9wZXJhdG9yPihmbG9hdCxmbG9hdCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAg
ICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9Pgog
ICAgICAgICAgICAgICAgICAgICBFUHRyLmJveChsZWZ0LmxvYWRWYWx1ZSgpID4gcmlnaHQubG9h
ZFZhbHVlKCkpOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21h
cC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIGJvb2wgb3BlcmF0b3I+PShpbnQsaW50KSIsCiAg
ICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9u
ID0gKFtsZWZ0LCByaWdodF0pID0+CiAgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KGxlZnQu
bG9hZFZhbHVlKCkgPj0gcmlnaHQubG9hZFZhbHVlKCkpOwogICAgICAgICAgICAgfSk7Ci0gICAg
ICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIGJvb2wg
b3BlcmF0b3I+PSh1aW50LHVpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAg
ICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAg
ICAgICAgICAgICAgRVB0ci5ib3gobGVmdC5sb2FkVmFsdWUoKSA+PSByaWdodC5sb2FkVmFsdWUo
KSk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgK
ICAgICAgICAgICAgICJuYXRpdmUgYm9vbCBvcGVyYXRvcj49KGZsb2F0LGZsb2F0KSIsCiAgICAg
ICAgICAgICBmdW5jID0+IHsKQEAgLTUzOCw3ICs3MDEsNyBAQCBjbGFzcyBJbnRyaW5zaWNzIHsK
ICAgICAgICAgZm9yIChsZXQgc2V0dGVyIG9mIEJ1aWx0aW5WZWN0b3JTZXR0ZXIuZnVuY3Rpb25z
KCkpCiAgICAgICAgICAgICB0aGlzLl9tYXAuc2V0KHNldHRlci50b1N0cmluZygpLCBmdW5jID0+
IHNldHRlci5pbnN0YW50aWF0ZUltcGxlbWVudGF0aW9uKGZ1bmMpKTsKICAgICB9Ci0gICAgCisK
ICAgICBhZGQodGhpbmcpCiAgICAgewogICAgICAgICBsZXQgaW50cmluc2ljID0gdGhpcy5fbWFw
LmdldCh0aGluZy50b1N0cmluZygpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL05hbWVDb250ZXh0LmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
TmFtZUNvbnRleHQuanMKaW5kZXggMWJhYjNmYzU2MDI2MDEwNzdiM2ZhODg1YTYwNTRhYjg2MGIw
YTE5My4uZGM2ODU3OGZmNTU2YjMxMmIwOTI3ZWYzYzBkZmZhMDA2OGYxYmU2MyAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmFtZUNvbnRleHQuanMKKysrIGIvVG9v
bHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmFtZUNvbnRleHQuanMKQEAgLTY5LDExICs2OSwz
MyBAQCBjbGFzcyBOYW1lQ29udGV4dCB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IAorICAgICAgICBpZiAodGhpbmcua2luZCA9PSBUeXBlKSB7CisgICAgICAgICAgICB0aGlzLl9z
ZXQuYWRkKHRoaW5nKTsKKyAgICAgICAgICAgIGlmICh0aGluZy5uYW1lID09ICJ2ZWN0b3IiKSB7
CisgICAgICAgICAgICAgICAgbGV0IGFycmF5ID0gdGhpcy5fbWFwLmdldCh0aGluZy5uYW1lKTsK
KyAgICAgICAgICAgICAgICBpZiAoIWFycmF5KSB7CisgICAgICAgICAgICAgICAgICAgIGFycmF5
ID0gW107CisgICAgICAgICAgICAgICAgICAgIGFycmF5LmtpbmQgPSBUeXBlOworICAgICAgICAg
ICAgICAgICAgICB0aGlzLl9tYXAuc2V0KHRoaW5nLm5hbWUsIGFycmF5KTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGFycmF5LmtpbmQgIT0gVHlwZSkKKyAgICAgICAg
ICAgICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3IodGhpbmcub3JpZ2luLm9yaWdpblN0cmlu
ZywgIkNhbm5vdCByZXVzZSB0eXBlIG5hbWUgZm9yIGZ1bmN0aW9uOiAiICsgdGhpbmcubmFtZSk7
CisgICAgICAgICAgICAgICAgYXJyYXkucHVzaCh0aGluZyk7CisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5fbWFw
Lmhhcyh0aGluZy5uYW1lKSkKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJy
b3IodGhpbmcub3JpZ2luLm9yaWdpblN0cmluZywgIkR1cGxpY2F0ZSBuYW1lOiAiICsgdGhpbmcu
bmFtZSk7CisgICAgICAgICAgICAgICAgdGhpcy5fbWFwLnNldCh0aGluZy5uYW1lLCB0aGluZyk7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAg
CiAgICAgICAgIGlmICh0aGlzLl9tYXAuaGFzKHRoaW5nLm5hbWUpKQogICAgICAgICAgICAgdGhy
b3cgbmV3IFdUeXBlRXJyb3IodGhpbmcub3JpZ2luLm9yaWdpblN0cmluZywgIkR1cGxpY2F0ZSBu
YW1lOiAiICsgdGhpbmcubmFtZSk7CiAKICAgICAgICAgdGhpcy5fc2V0LmFkZCh0aGluZyk7CiAg
ICAgICAgIHRoaXMuX21hcC5zZXQodGhpbmcubmFtZSwgdGhpbmcpOworCiAgICAgfQogICAgIAog
ICAgIGdldChraW5kLCBuYW1lKQpAQCAtMTAyLDYgKzEyNCwxMCBAQCBjbGFzcyBOYW1lQ29udGV4
dCB7CiAgICAgICAgICAgICBmb3IgKGxldCBmdW5jIG9mIHRoaW5nKQogICAgICAgICAgICAgICAg
IHlpZWxkIGZ1bmM7CiAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0gZWxzZSBpZiAodGhp
bmcua2luZCA9PT0gVHlwZSAmJiAodGhpbmcgaW5zdGFuY2VvZiBBcnJheSkpIHsKKyAgICAgICAg
ICAgIGZvciAobGV0IHR5cGUgb2YgdGhpbmcpCisgICAgICAgICAgICAgICAgeWllbGQgdHlwZTsK
KyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICB5aWVsZCB0aGluZzsKICAg
ICB9CkBAIC0xNjMsOCArMTg5LDggQEAgY2xhc3MgTmFtZUNvbnRleHQgewogICAgIHsKICAgICAg
ICAgZm9yIChsZXQgdmFsdWUgb2YgdGhpcy5fbWFwLnZhbHVlcygpKSB7CiAgICAgICAgICAgICBp
ZiAodmFsdWUgaW5zdGFuY2VvZiBBcnJheSkgewotICAgICAgICAgICAgICAgIGZvciAobGV0IGZ1
bmMgb2YgdmFsdWUpCi0gICAgICAgICAgICAgICAgICAgIHlpZWxkIGZ1bmM7CisgICAgICAgICAg
ICAgICAgZm9yIChsZXQgdGhpbmcgb2YgdmFsdWUpCisgICAgICAgICAgICAgICAgICAgIHlpZWxk
IHRoaW5nOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgeWllbGQgdmFsdWU7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9OYW1lUmVzb2x2ZXIuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYW1l
UmVzb2x2ZXIuanMKaW5kZXggZjYxNWEyZmI0ZTg3ZGMxZGViN2IwMWI1NzJmYjdhZjYyNmFiZDA5
NS4uOGU0YjAyMTQwNjI5MzdiNjIxMmVlYWJhM2IwY2ZlMGI1YTM1OWEzMyAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmFtZVJlc29sdmVyLmpzCisrKyBiL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05hbWVSZXNvbHZlci5qcwpAQCAtMTIwLDEyICsxMjAs
MTYgQEAgY2xhc3MgTmFtZVJlc29sdmVyIGV4dGVuZHMgVmlzaXRvciB7CiAgICAgCiAgICAgdmlz
aXRUeXBlUmVmKG5vZGUpCiAgICAgeworICAgICAgICBzdXBlci52aXNpdFR5cGVSZWYobm9kZSk7
CiAgICAgICAgIGxldCB0eXBlID0gbm9kZS50eXBlOwogICAgICAgICBpZiAoIXR5cGUpIHsKICAg
ICAgICAgICAgIHR5cGUgPSB0aGlzLl9uYW1lQ29udGV4dC5nZXQoVHlwZSwgbm9kZS5uYW1lKTsK
ICAgICAgICAgICAgIGlmICghdHlwZSkKICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVF
cnJvcihub2RlLm9yaWdpbi5vcmlnaW5TdHJpbmcsICJDb3VsZCBub3QgZmluZCB0eXBlIG5hbWVk
ICIgKyBub2RlLm5hbWUpOwotICAgICAgICAgICAgbm9kZS50eXBlID0gdHlwZTsKKyAgICAgICAg
ICAgIGlmICh0eXBlIGluc3RhbmNlb2YgQXJyYXkpCisgICAgICAgICAgICAgICAgbm9kZS5wb3Nz
aWJsZU92ZXJsb2FkcyA9IHR5cGU7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
bm9kZS50eXBlID0gdHlwZTsKICAgICAgICAgfQogICAgIH0KICAgICAKQEAgLTIwOCw5ICsyMTIs
NCBAQCBjbGFzcyBOYW1lUmVzb2x2ZXIgZXh0ZW5kcyBWaXNpdG9yIHsKICAgICAgICAgCiAgICAg
ICAgIHN1cGVyLnZpc2l0Q2FsbEV4cHJlc3Npb24obm9kZSk7CiAgICAgfQotCi0gICAgdmlzaXRW
ZWN0b3JUeXBlKG5vZGUpCi0gICAgewotICAgICAgICBub2RlLmVsZW1lbnRUeXBlLnZpc2l0KHRo
aXMpOwotICAgIH0KIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L05hdGl2ZVR5cGUuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYXRpdmVUeXBl
LmpzCmluZGV4IGUyZDg1MWNiY2NiYTNhOTcyMzRjN2JkMzkyOTA3ODI5Y2E5ZTA1ZjIuLjIzODFi
NWE2YjBiMDEwZTBmZGQ0ZGM1MzU1MGE4ZWE2YjRmODM0N2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL05hdGl2ZVR5cGUuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvTmF0aXZlVHlwZS5qcwpAQCAtMjUsMTEgKzI1LDE0IEBACiAidXNlIHN0
cmljdCI7CiAKIGNsYXNzIE5hdGl2ZVR5cGUgZXh0ZW5kcyBUeXBlIHsKLSAgICBjb25zdHJ1Y3Rv
cihvcmlnaW4sIG5hbWUpCisgICAgY29uc3RydWN0b3Iob3JpZ2luLCBuYW1lLCB0eXBlQXJndW1l
bnRzKQogICAgIHsKKyAgICAgICAgaWYgKCEodHlwZUFyZ3VtZW50cyBpbnN0YW5jZW9mIEFycmF5
KSkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigidHlwZSBwYXJhbWV0ZXJzIG5vdCBhcnJh
eTogIiArIHR5cGVBcmd1bWVudHMpOwogICAgICAgICBzdXBlcigpOwogICAgICAgICB0aGlzLl9v
cmlnaW4gPSBvcmlnaW47CiAgICAgICAgIHRoaXMuX25hbWUgPSBuYW1lOworICAgICAgICB0aGlz
Ll90eXBlQXJndW1lbnRzID0gdHlwZUFyZ3VtZW50czsKICAgICAgICAgdGhpcy5faXNOdW1iZXIg
PSBmYWxzZTsKICAgICAgICAgdGhpcy5faXNJbnQgPSBmYWxzZTsKICAgICAgICAgdGhpcy5faXNG
bG9hdGluZyA9IGZhbHNlOwpAQCAtMzgsNiArNDEsNyBAQCBjbGFzcyBOYXRpdmVUeXBlIGV4dGVu
ZHMgVHlwZSB7CiAgICAgCiAgICAgZ2V0IG9yaWdpbigpIHsgcmV0dXJuIHRoaXMuX29yaWdpbjsg
fQogICAgIGdldCBuYW1lKCkgeyByZXR1cm4gdGhpcy5fbmFtZTsgfQorICAgIGdldCB0eXBlQXJn
dW1lbnRzKCkgeyByZXR1cm4gdGhpcy5fdHlwZUFyZ3VtZW50czsgfQogICAgIGdldCBpc05hdGl2
ZSgpIHsgcmV0dXJuIHRydWU7IH0KICAgICAKICAgICAvLyBXZSBsZXQgSW50cmluc2ljcy5qcyBz
ZXQgdGhlc2UgYXMgaXQgbGlrZXMuCkBAIC01MiwxOSArNTYsMTggQEAgY2xhc3MgTmF0aXZlVHlw
ZSBleHRlbmRzIFR5cGUgewogICAgIAogICAgIHRvU3RyaW5nKCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBgbmF0aXZlIHR5cGVkZWYgJHt0aGlzLm5hbWV9YDsKKyAgICAgICAgbGV0IHJlc3VsdCA9
IGBuYXRpdmUgdHlwZWRlZiAke3RoaXMubmFtZX1gOworICAgICAgICBpZiAodGhpcy50eXBlQXJn
dW1lbnRzLmxlbmd0aCkKKyAgICAgICAgICAgIHJlc3VsdCArPSAiPCIgKyB0aGlzLnR5cGVBcmd1
bWVudHMuam9pbigiLCIpICsgIj4iOworICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAg
ICAKICAgICBzdGF0aWMgY3JlYXRlKG9yaWdpbiwgbmFtZSwgdHlwZUFyZ3VtZW50cykKICAgICB7
Ci0gICAgICAgIC8vIEZJWE1FOiBGb3IgbmF0aXZlIHR5cGVzIGxpa2UgVGV4dHVyZTFEIHRoaXMg
c2hvdWxkIHJlc29sdmUgdGhlIHR5cGUgdG8gc29tZXRoaW5nIGNvbmNyZXRlIGJ5IGNoYW5naW5n
IHRoZSB0eXBlIG5hbWUuCi0gICAgICAgIGlmICh0eXBlQXJndW1lbnRzLmxlbmd0aCkKLSAgICAg
ICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9yKG9yaWdpbi5vcmlnaW5TdHJpbmcsIGAke25hbWV9
PCR7dHlwZUFyZ3VtZW50cy5qb2luKCIsIil9PjogU3VwcG9ydCBmb3IgbmF0aXZlIHR5cGVzIHdp
dGggdHlwZSBhcmd1bWVudHMgaXMgY3VycmVudGx5IHVuaW1wbGVtZW50ZWQuYCk7CisgICAgICAg
IGlmIChuYW1lID09ICJ2ZWN0b3IiKQorICAgICAgICAgICAgcmV0dXJuIG5ldyBWZWN0b3JUeXBl
KG9yaWdpbiwgbmFtZSwgdHlwZUFyZ3VtZW50cyk7CiAKLSAgICAgICAgaWYgKGFsbFZlY3RvclR5
cGVOYW1lcygpLmluZGV4T2YobmFtZSkgPiAtMSkKLSAgICAgICAgICAgIHJldHVybiBuZXcgVmVj
dG9yVHlwZShvcmlnaW4sIG5hbWUpOwotCi0gICAgICAgIHJldHVybiBuZXcgTmF0aXZlVHlwZShv
cmlnaW4sIG5hbWUpOworICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZVR5cGUob3JpZ2luLCBuYW1l
LCB0eXBlQXJndW1lbnRzKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL1ByZXBhcmUuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9QcmVwYXJlLmpzCmluZGV4IDdiMTYxMzllOTViODFlMmU4ZGE4MzU0YmQ4YzE3OWIxOTBiYWVm
YTAuLjlmYWNhODZlMjA1NzU1YjJjNmE2NmY0MTJiNTY5MmU5OWU3YjAzYWYgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1ByZXBhcmUuanMKKysrIGIvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvUHJlcGFyZS5qcwpAQCAtNDAsNyArNDAsNiBAQCBsZXQgcHJl
cGFyZSA9ICgoKSA9PiB7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGZvbGRDb25zdGV4
cHJzKHByb2dyYW0pOwotICAgICAgICByZW1vdmVUeXBlQXJndW1lbnRzKHByb2dyYW0pOwogCiAg
ICAgICAgIGxldCBuYW1lUmVzb2x2ZXIgPSBjcmVhdGVOYW1lUmVzb2x2ZXIocHJvZ3JhbSk7CiAg
ICAgICAgIHJlc29sdmVOYW1lc0luVHlwZXMocHJvZ3JhbSwgbmFtZVJlc29sdmVyKTsKQEAgLTU0
LDYgKzUzLDcgQEAgbGV0IHByZXBhcmUgPSAoKCkgPT4gewogICAgICAgICBzeW50aGVzaXplRGVm
YXVsdENvbnN0cnVjdG9yT3BlcmF0b3IocHJvZ3JhbSk7CiAgICAgICAgIHJlc29sdmVOYW1lc0lu
RnVuY3Rpb25zKHByb2dyYW0sIG5hbWVSZXNvbHZlcik7CiAgICAgICAgIHJlc29sdmVUeXBlRGVm
c0luRnVuY3Rpb25zKHByb2dyYW0pOworICAgICAgICBjaGVja1R5cGVzV2l0aEFyZ3VtZW50cyhw
cm9ncmFtKTsKICAgICAgICAgCiAgICAgICAgIGNoZWNrKHByb2dyYW0pOwogICAgICAgICBjaGVj
a0xpdGVyYWxUeXBlcyhwcm9ncmFtKTsKQEAgLTY2LDYgKzY2LDcgQEAgbGV0IHByZXBhcmUgPSAo
KCkgPT4gewogICAgICAgICBjaGVja0xvb3BzKHByb2dyYW0pOwogICAgICAgICBjaGVja1JlY3Vy
c2lvbihwcm9ncmFtKTsKICAgICAgICAgY2hlY2tQcm9ncmFtV3JhcHBlZChwcm9ncmFtKTsKKyAg
ICAgICAgY2hlY2tUeXBlc1dpdGhBcmd1bWVudHMocHJvZ3JhbSk7CiAgICAgICAgIGZpbmRIaWdo
Wm9tYmllcyhwcm9ncmFtKTsKICAgICAgICAgcHJvZ3JhbS52aXNpdChuZXcgU3RydWN0TGF5b3V0
QnVpbGRlcigpKTsKICAgICAgICAgaW5saW5lKHByb2dyYW0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUHJvZ3JhbS5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL1Byb2dyYW0uanMKaW5kZXggMDY2MjVkOThmYzQxZTc0YzkzZGVjZTgwYjcwY2U1
NWM3YWY3NGRkNS4uMTExNmM0ZjU3NzU2MjIxNWZkZDc0MjhhMzE3NTc5YTkyOTE2NTQxNCAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUHJvZ3JhbS5qcworKysgYi9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9Qcm9ncmFtLmpzCkBAIC00OCwxOSArNDgsMjUg
QEAgY2xhc3MgUHJvZ3JhbSBleHRlbmRzIE5vZGUgewogICAgICAgICBpZiAoc3RhdGVtZW50IGlu
c3RhbmNlb2YgRnVuYykgewogICAgICAgICAgICAgbGV0IGFycmF5ID0gdGhpcy5fZnVuY3Rpb25z
LmdldChzdGF0ZW1lbnQubmFtZSk7CiAgICAgICAgICAgICBpZiAoIWFycmF5KQotICAgICAgICAg
ICAgICAgIHRoaXMuX2Z1bmN0aW9ucy5zZXQoc3RhdGVtZW50Lm5hbWUsIGFycmF5ID0gW10pOwor
ICAgICAgICAgICAgICAgIHRoaXMuZnVuY3Rpb25zLnNldChzdGF0ZW1lbnQubmFtZSwgYXJyYXkg
PSBbXSk7CiAgICAgICAgICAgICBhcnJheS5wdXNoKHN0YXRlbWVudCk7Ci0gICAgICAgIH0gZWxz
ZSBpZiAoc3RhdGVtZW50IGluc3RhbmNlb2YgVHlwZSkKLSAgICAgICAgICAgIHRoaXMuX3R5cGVz
LnNldChzdGF0ZW1lbnQubmFtZSwgc3RhdGVtZW50KTsKLSAgICAgICAgZWxzZQorICAgICAgICB9
IGVsc2UgaWYgKHN0YXRlbWVudCBpbnN0YW5jZW9mIFR5cGUpIHsKKyAgICAgICAgICAgIGlmIChz
dGF0ZW1lbnQuaXNOYXRpdmUgJiYgc3RhdGVtZW50Lm5hbWUgPT0gInZlY3RvciIpIHsKKyAgICAg
ICAgICAgICAgICBsZXQgYXJyYXkgPSB0aGlzLnR5cGVzLmdldChzdGF0ZW1lbnQubmFtZSk7Cisg
ICAgICAgICAgICAgICAgaWYgKCFhcnJheSkKKyAgICAgICAgICAgICAgICAgICAgdGhpcy50eXBl
cy5zZXQoc3RhdGVtZW50Lm5hbWUsIGFycmF5ID0gW10pOworICAgICAgICAgICAgICAgIGFycmF5
LnB1c2goc3RhdGVtZW50KTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHRo
aXMudHlwZXMuc2V0KHN0YXRlbWVudC5uYW1lLCBzdGF0ZW1lbnQpOworICAgICAgICB9IGVsc2UK
ICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiU3RhdGVtZW50IGlzIG5vdCBhIGZ1bmN0aW9u
IG9yIHR5cGU6ICIgKyBzdGF0ZW1lbnQpOwotICAgICAgICB0aGlzLl90b3BMZXZlbFN0YXRlbWVu
dHMucHVzaChzdGF0ZW1lbnQpOwotICAgICAgICB0aGlzLl9nbG9iYWxOYW1lQ29udGV4dC5hZGQo
c3RhdGVtZW50KTsKKyAgICAgICAgdGhpcy50b3BMZXZlbFN0YXRlbWVudHMucHVzaChzdGF0ZW1l
bnQpOworICAgICAgICB0aGlzLmdsb2JhbE5hbWVDb250ZXh0LmFkZChzdGF0ZW1lbnQpOwogICAg
IH0KICAgICAKICAgICB0b1N0cmluZygpCiAgICAgewotICAgICAgICBpZiAoIXRoaXMuX3RvcExl
dmVsU3RhdGVtZW50cy5sZW5ndGgpCisgICAgICAgIGlmICghdGhpcy50b3BMZXZlbFN0YXRlbWVu
dHMubGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuICIiOwogICAgICAgICByZXR1cm4gdGhpcy5f
dG9wTGV2ZWxTdGF0ZW1lbnRzLmpvaW4oIjsiKSArICI7IjsKICAgICB9CmRpZmYgLS1naXQgYS9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZWN1cnNpdmVUeXBlQ2hlY2tlci5qcyBiL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1JlY3Vyc2l2ZVR5cGVDaGVja2VyLmpzCmluZGV4
IDkxZjc2NzQyZjYwZDE0YTM3ZTZlNjA2YzNhYjJmOWMyYzhmYWIxMTYuLmRlM2Q1MjRiYzU0ODhj
ODcwNWZlYThmNjdiYWQ4N2JlY2JiOTdkZGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL1JlY3Vyc2l2ZVR5cGVDaGVja2VyLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL1JlY3Vyc2l2ZVR5cGVDaGVja2VyLmpzCkBAIC01MSw3ICs1MSwxMSBA
QCBjbGFzcyBSZWN1cnNpdmVUeXBlQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogICAgIHZpc2l0
VHlwZVJlZihub2RlKQogICAgIHsKICAgICAgICAgc3VwZXIudmlzaXRUeXBlUmVmKG5vZGUpOwot
ICAgICAgICBub2RlLnR5cGUudmlzaXQodGhpcyk7CisgICAgICAgIGlmIChub2RlLnBvc3NpYmxl
T3ZlcmxvYWRzKSB7CisgICAgICAgICAgICBmb3IgKGxldCBvdmVybG9hZCBvZiBub2RlLnBvc3Np
YmxlT3ZlcmxvYWRzKQorICAgICAgICAgICAgICAgIG92ZXJsb2FkLnZpc2l0KHRoaXMpOworICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgIG5vZGUudHlwZS52aXNpdCh0aGlzKTsKICAgICB9CiB9
CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1JlbW92ZVR5cGVB
cmd1bWVudHMuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZW1vdmVUeXBlQXJn
dW1lbnRzLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5M2RiOWU2NDdjOTIxYzk1
NGU4OTk4Y2UxNjc1ZGU3Y2I2MWYxNDJiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1JlbW92ZVR5cGVB
cmd1bWVudHMuanMKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLSJ1c2Ugc3RyaWN0IjsKLQotZnVuY3Rpb24g
cmVtb3ZlVHlwZUFyZ3VtZW50cyhwcm9ncmFtKQotewotICAgIGNsYXNzIFJlbW92ZVR5cGVBcmd1
bWVudHMgZXh0ZW5kcyBWaXNpdG9yIHsKLSAgICAgICAgc3RhdGljIHJlc29sdmVOYW1lQW5kQXJn
dW1lbnRzKG5vZGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbm9kZS50eXBlQXJndW1l
bnRzKQotICAgICAgICAgICAgICAgIHJldHVybiBub2RlLm5hbWU7Ci0KLSAgICAgICAgICAgIHN3
aXRjaCAobm9kZS5uYW1lKSB7Ci0gICAgICAgICAgICBjYXNlICJ2ZWN0b3IiOgotICAgICAgICAg
ICAgICAgIGlmIChub2RlLnR5cGVBcmd1bWVudHMubGVuZ3RoICE9IDIpCi0gICAgICAgICAgICAg
ICAgICAgIHRocm93IG5ldyBXU3ludGF4RXJyb3Iobm9kZS5vcmlnaW5TdHJpbmcsIGAke25vZGUu
bmFtZX0gc2hvdWxkIGhhdmUgMiB0eXBlIGFyZ3VtZW50cywgZ290ICR7bm9kZS50eXBlQXJndW1l
bnRzLmxlbmd0aH0uYCk7Ci0KLSAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50VHlwZU5hbWUg
PSBub2RlLnR5cGVBcmd1bWVudHNbMF0ubmFtZTsKLSAgICAgICAgICAgICAgICBjb25zdCBsZW5n
dGhWYWx1ZSA9IG5vZGUudHlwZUFyZ3VtZW50c1sxXS52YWx1ZTsKLQotICAgICAgICAgICAgICAg
IGlmIChWZWN0b3JFbGVtZW50VHlwZXMuaW5kZXhPZihlbGVtZW50VHlwZU5hbWUpIDwgMCkKLSAg
ICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFdTeW50YXhFcnJvcihub2RlLm9yaWdpblN0cmlu
ZywgYCR7ZWxlbWVudFR5cGVOYW1lfSBpcyBub3QgYSB2YWxpZCB2ZWN0b3IgZWxlbWVudCB0eXBl
LmApOwotICAgICAgICAgICAgICAgIGlmIChWZWN0b3JFbGVtZW50U2l6ZXMuaW5kZXhPZihsZW5n
dGhWYWx1ZSkgPCAwKQotICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV1N5bnRheEVycm9y
KG5vZGUub3JpZ2luU3RyaW5nLCBgJHtsZW5ndGhWYWx1ZX0gaXMgbm90IGEgdmFsaWQgc2l6ZSBm
b3IgdmVjdG9ycyB3aXRoIGVsZW1lbnQgdHlwZSAke2VsZW1lbnRUeXBlTmFtZX0uYCk7Ci0KLSAg
ICAgICAgICAgICAgICByZXR1cm4gYCR7ZWxlbWVudFR5cGVOYW1lfSR7bGVuZ3RoVmFsdWV9YDsK
LSAgICAgICAgICAgIC8vIEZJWE1FOiBGdXJ0aGVyIGNhc2VzIGZvciBtYXRyaWNlcywgdGV4dHVy
ZXMsIGV0Yy4KLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgaWYgKG5vZGUu
dHlwZUFyZ3VtZW50cy5sZW5ndGgpCi0gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBXU3lu
dGF4RXJyb3IoYCR7bm9kZS5uYW1lfSR7YXJndW1lbnRzLmpvaW4oIiwgIil9IGlzIG5vdCBhIHBl
cm1pdHRlZCBnZW5lcmljIHR5cGUgb3IgZnVuY3Rpb25gKTsKLSAgICAgICAgICAgICAgICByZXR1
cm4gbm9kZS5uYW1lOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgdmlzaXRU
eXBlUmVmKG5vZGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5vZGUuX25hbWUgPSBSZW1vdmVU
eXBlQXJndW1lbnRzLnJlc29sdmVOYW1lQW5kQXJndW1lbnRzKG5vZGUpOwotICAgICAgICAgICAg
bm9kZS5fdHlwZUFyZ3VtZW50cyA9IG51bGw7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBwcm9n
cmFtLnZpc2l0KG5ldyBSZW1vdmVUeXBlQXJndW1lbnRzKCkpOwotfQpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmVzb2x2ZU5hbWVzLmpzIGIvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvUmVzb2x2ZU5hbWVzLmpzCmluZGV4IDJlNDAyYzhkNmMwYTM2MDk4
NTYxZTAyNzVlZTUzZTc3OGZkMzg0YjguLmI4YjUzMzQyNDU5YWU4MzlhY2Y3ZjA3YzJiYmFlYTk2
ZThhNTRjZGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Jlc29s
dmVOYW1lcy5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXNvbHZlTmFt
ZXMuanMKQEAgLTMxLDggKzMxLDEzIEBAIGZ1bmN0aW9uIGNyZWF0ZU5hbWVSZXNvbHZlcihwcm9n
cmFtKQogCiBmdW5jdGlvbiByZXNvbHZlTmFtZXNJblR5cGVzKHByb2dyYW0sIG5hbWVSZXNvbHZl
cikKIHsKLSAgICBmb3IgKGxldCB0eXBlIG9mIHByb2dyYW0udHlwZXMudmFsdWVzKCkpCi0gICAg
ICAgIG5hbWVSZXNvbHZlci5kb1N0YXRlbWVudCh0eXBlKTsKKyAgICBmb3IgKGxldCB0eXBlIG9m
IHByb2dyYW0udHlwZXMudmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKHR5cGUgaW5zdGFuY2VvZiBB
cnJheSkgeworICAgICAgICAgICAgZm9yIChsZXQgY29uc3RpdHVlbnRUeXBlIG9mIHR5cGUpCisg
ICAgICAgICAgICAgICAgbmFtZVJlc29sdmVyLmRvU3RhdGVtZW50KGNvbnN0aXR1ZW50VHlwZSk7
CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbmFtZVJlc29sdmVyLmRvU3RhdGVtZW50KHR5
cGUpOworICAgIH0KIH0KIAogZnVuY3Rpb24gcmVzb2x2ZU5hbWVzSW5GdW5jdGlvbnMocHJvZ3Jh
bSwgbmFtZVJlc29sdmVyKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvUmVzb2x2ZU92ZXJsb2FkSW1wbC5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L1Jlc29sdmVPdmVybG9hZEltcGwuanMKaW5kZXggZDBmMWUzNGQ2MTdlYTI3MjY2NDY3YzE2MTcw
NzE1NDY2NGE0NDlhZC4uN2EwOTdiY2E0NzBlY2I1NmE2ZWUzZGVmNTJhYWY1Zjc4YjUwNjUxMSAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmVzb2x2ZU92ZXJsb2Fk
SW1wbC5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXNvbHZlT3Zlcmxv
YWRJbXBsLmpzCkBAIC0xMDAsMyArMTAwLDI4IEBAIGZ1bmN0aW9uIHJlc29sdmVPdmVybG9hZElt
cGwoZnVuY3Rpb25zLCBhcmd1bWVudFR5cGVzLCByZXR1cm5UeXBlLCBhbGxvd0VudHJ5UG9pCiAg
ICAgCiAgICAgcmV0dXJuIHtmYWlsdXJlczogYW1iaWd1aXR5TGlzdC5tYXAob3ZlcmxvYWQgPT4g
bmV3IE92ZXJsb2FkUmVzb2x1dGlvbkZhaWx1cmUob3ZlcmxvYWQuZnVuYywgbWVzc2FnZSkpfTsK
IH0KKworZnVuY3Rpb24gcmVzb2x2ZVR5cGVPdmVybG9hZEltcGwodHlwZXMsIHR5cGVBcmd1bWVu
dHMpCit7CisgICAgaWYgKCF0eXBlcykKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJOdWxsIHR5
cGVzOyB0aGF0IHNob3VsZCBoYXZlIGJlZW4gY2F1Z2h0IGJ5IHRoZSBjYWxsZXIuIik7CisKKyAg
ICBsZXQgZmFpbHVyZXMgPSBbXTsKKyAgICBsZXQgc3VjY2Vzc2VzID0gW107CisgICAgZm9yIChs
ZXQgdHlwZSBvZiB0eXBlcykgeworICAgICAgICBsZXQgb3ZlcmxvYWQgPSBpbmZlclR5cGVzRm9y
VHlwZUFyZ3VtZW50cyh0eXBlLCB0eXBlQXJndW1lbnRzKTsKKyAgICAgICAgaWYgKG92ZXJsb2Fk
LmZhaWx1cmUpCisgICAgICAgICAgICBmYWlsdXJlcy5wdXNoKG92ZXJsb2FkLmZhaWx1cmUpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBzdWNjZXNzZXMucHVzaChvdmVybG9hZCk7CisgICAg
fQorICAgIAorICAgIGlmICghc3VjY2Vzc2VzLmxlbmd0aCkKKyAgICAgICAgcmV0dXJuIHtmYWls
dXJlczogZmFpbHVyZXN9OworICAgIAorICAgIGlmIChzdWNjZXNzZXMubGVuZ3RoID09IDEpCisg
ICAgICAgIHJldHVybiBzdWNjZXNzZXNbMF07CisgICAgCisgICAgbGV0IG1lc3NhZ2UgPSAiQW1i
aWd1b3VzIG92ZXJsb2FkIC0gdHlwZXMgbXV0dWFsbHkgYXBwbGljYWJsZSI7CisgICAgcmV0dXJu
IHtmYWlsdXJlczogc3VjY2Vzc2VzLm1hcChvdmVybG9hZCA9PiBuZXcgVHlwZU92ZXJsb2FkUmVz
b2x1dGlvbkZhaWx1cmUob3ZlcmxvYWQudHlwZSwgbWVzc2FnZSkpfTsKK30KZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Jlc29sdmVUeXBlRGVmcy5qcyBiL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Jlc29sdmVUeXBlRGVmcy5qcwppbmRleCA5MTQzZjhl
MWUwMGEwNDk4MTRiOTBhMzQ1YzVhZjQ1MTQ1OWQ4NTc0Li4wNTc0YmVjZDU1MzE1MDk0NzhhMmRl
ZmRjMmZlN2M2OGU2MWMzZDM1IDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9SZXNvbHZlVHlwZURlZnMuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvUmVzb2x2ZVR5cGVEZWZzLmpzCkBAIC0yNyw4ICsyNywxMyBAQAogZnVuY3Rpb24gcmVzb2x2
ZVR5cGVEZWZzSW5UeXBlcyhwcm9ncmFtKQogewogICAgIGxldCByZXNvbHZlciA9IG5ldyBUeXBl
RGVmUmVzb2x2ZXIoKTsKLSAgICBmb3IgKGxldCB0eXBlIG9mIHByb2dyYW0udHlwZXMudmFsdWVz
KCkpCi0gICAgICAgIHR5cGUudmlzaXQocmVzb2x2ZXIpOworICAgIGZvciAobGV0IHR5cGUgb2Yg
cHJvZ3JhbS50eXBlcy52YWx1ZXMoKSkgeworICAgICAgICBpZiAodHlwZSBpbnN0YW5jZW9mIEFy
cmF5KSB7CisgICAgICAgICAgICBmb3IgKGxldCBjb25zdGl0dWVudFR5cGUgb2YgdHlwZSkKKyAg
ICAgICAgICAgICAgICBjb25zdGl0dWVudFR5cGUudmlzaXQocmVzb2x2ZXIpOworICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgIHR5cGUudmlzaXQocmVzb2x2ZXIpOworICAgIH0KIH0KIAogZnVu
Y3Rpb24gcmVzb2x2ZVR5cGVEZWZzSW5GdW5jdGlvbnMocHJvZ3JhbSkKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Jld3JpdGVyLmpzIGIvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvUmV3cml0ZXIuanMKaW5kZXggZDU0N2QyMDNmMGRiZjhjYWJlZTQzNzc4
MDNiZDViMDg0ZTk4MDdiYy4uYTFiNjAxNWIzNjQwNjJkMWY4NDE2M2FlYTA4MTI4MzAxNGYyNjZj
NyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmV3cml0ZXIuanMK
KysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmV3cml0ZXIuanMKQEAgLTk3LDcg
Kzk3LDkgQEAgY2xhc3MgUmV3cml0ZXIgewogICAgIAogICAgIHZpc2l0VHlwZVJlZihub2RlKQog
ICAgIHsKLSAgICAgICAgbGV0IHJlc3VsdCA9IG5ldyBUeXBlUmVmKG5vZGUub3JpZ2luLCBub2Rl
Lm5hbWUpOworICAgICAgICBsZXQgcmVzdWx0ID0gbmV3IFR5cGVSZWYobm9kZS5vcmlnaW4sIG5v
ZGUubmFtZSwgbm9kZS50eXBlQXJndW1lbnRzLm1hcChhcmd1bWVudCA9PiBhcmd1bWVudC52aXNp
dCh0aGlzKSkpOworICAgICAgICBpZiAobm9kZS5wb3NzaWJsZU92ZXJsb2FkcykKKyAgICAgICAg
ICAgIHJlc3VsdC5wb3NzaWJsZU92ZXJsb2FkcyA9IG5vZGUucG9zc2libGVPdmVybG9hZHMubWFw
KG92ZXJsb2FkID0+IE5vZGUudmlzaXQob3ZlcmxvYWQsIHRoaXMpKTsKICAgICAgICAgaWYgKG5v
ZGUudHlwZSkKICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gTm9kZS52aXNpdChub2RlLnR5cGUs
IHRoaXMpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMzgyLDcgKzM4NCw3IEBAIGNsYXNz
IFJld3JpdGVyIHsKIAogICAgIHZpc2l0VmVjdG9yVHlwZShub2RlKQogICAgIHsKLSAgICAgICAg
Y29uc3QgdmVjVHlwZSA9IG5ldyBWZWN0b3JUeXBlKG5vZGUub3JpZ2luLCBub2RlLm5hbWUpOwor
ICAgICAgICBjb25zdCB2ZWNUeXBlID0gbmV3IFZlY3RvclR5cGUobm9kZS5vcmlnaW4sIG5vZGUu
bmFtZSwgbm9kZS50eXBlQXJndW1lbnRzLm1hcChhcmd1bWVudCA9PiBhcmd1bWVudC52aXNpdCh0
aGlzKSkpOwogICAgICAgICB2ZWNUeXBlLl9lbGVtZW50VHlwZSA9IG5vZGUuZWxlbWVudFR5cGUu
dmlzaXQodGhpcyk7CiAgICAgICAgIHJldHVybiB2ZWNUeXBlOwogICAgIH0KZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1NQSVJWLmh0bWwgYi9Ub29scy9XZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9TUElSVi5odG1sCmluZGV4IGM3YjM5NDBmMmIxMWJkODk2MTRmMTRh
OWI1MmM0N2E1NjE2NmFiMTQuLjIwYmU3Yzg0YzlhZjk3MGYxM2QxNTRlMmU0NGNkMzQ5ZGIzYzc0
ODEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1NQSVJWLmh0bWwK
KysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU1BJUlYuaHRtbApAQCAtNDMsNiAr
NDMsNyBAQCB0ZCB7CiAgICAgPHNjcmlwdCBzcmM9IkNoZWNrUmVjdXJzaW9uLmpzIj48L3Njcmlw
dD4KICAgICA8c2NyaXB0IHNyYz0iQ2hlY2tSZWN1cnNpdmVUeXBlcy5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9IkNoZWNrUmV0dXJucy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBz
cmM9IkNoZWNrVHlwZXNXaXRoQXJndW1lbnRzLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iQ2hlY2tVbnJlYWNoYWJsZUNvZGUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJD
aGVja1dyYXBwZWQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDaGVja2VyLmpzIj48
L3NjcmlwdD4KQEAgLTExNiw3ICsxMTcsNiBAQCB0ZCB7CiAgICAgPHNjcmlwdCBzcmM9IlJlYWRN
b2RpZnlXcml0ZUV4cHJlc3Npb24uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJSZWN1
cnNpb25DaGVja2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iUmVjdXJzaXZlVHlw
ZUNoZWNrZXIuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJSZW1vdmVUeXBlQXJndW1l
bnRzLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iUmVzb2x2ZU5hbWVzLmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iUmVzb2x2ZU92ZXJsb2FkSW1wbC5qcyI+PC9zY3JpcHQ+
CiAgICAgPHNjcmlwdCBzcmM9IlJlc29sdmVQcm9wZXJ0aWVzLmpzIj48L3NjcmlwdD4KQEAgLTE0
MCw2ICsxNDAsNyBAQCB0ZCB7CiAgICAgPHNjcmlwdCBzcmM9IlR5cGVEZWYuanMiPjwvc2NyaXB0
PgogICAgIDxzY3JpcHQgc3JjPSJUeXBlRGVmUmVzb2x2ZXIuanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgc3JjPSJUeXBlUmVmLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVHlwZU92
ZXJsb2FkUmVzb2x1dGlvbkZhaWx1cmUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJU
eXBlZFZhbHVlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVWludExpdGVyYWwuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJVaW50TGl0ZXJhbFR5cGUuanMiPjwvc2NyaXB0
PgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhbmRhcmRMaWJy
YXJ5LmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhbmRhcmRMaWJyYXJ5Lmpz
CmluZGV4IDA2YjI1MWNmMGEyNDgxOWNhYjUwNjVlZjU0NDVlMTQ4OWQ1ZWFhZmMuLjgxOTBhNDM1
NjkyM2E2MWU1NDg1YmRkNGYxODBkMTM4Mzc3NDg5OGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL1N0YW5kYXJkTGlicmFyeS5qcworKysgYi9Ub29scy9XZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9TdGFuZGFyZExpYnJhcnkuanMKQEAgLTMzLDE3ICszMyw3MCBAQCBs
ZXQgc3RhbmRhcmRMaWJyYXJ5ID0gYAogbmF0aXZlIHR5cGVkZWYgdm9pZDsKIG5hdGl2ZSB0eXBl
ZGVmIGJvb2w7CiBuYXRpdmUgdHlwZWRlZiB1Y2hhcjsKK25hdGl2ZSB0eXBlZGVmIHVzaG9ydDsK
IG5hdGl2ZSB0eXBlZGVmIHVpbnQ7CituYXRpdmUgdHlwZWRlZiBjaGFyOworbmF0aXZlIHR5cGVk
ZWYgc2hvcnQ7CiBuYXRpdmUgdHlwZWRlZiBpbnQ7CituYXRpdmUgdHlwZWRlZiBoYWxmOwogbmF0
aXZlIHR5cGVkZWYgZmxvYXQ7Ci0KLS8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgdGhlc2UgdHlw
ZXMgdG8gSW50cmluc2ljcy5qcwotLy8gbmF0aXZlIHR5cGVkZWYgdXNob3J0OwotLy8gbmF0aXZl
IHR5cGVkZWYgY2hhcjsKLS8vIG5hdGl2ZSB0eXBlZGVmIHNob3J0OwotLy8gbmF0aXZlIHR5cGVk
ZWYgaGFsZjsKLS8vIG5hdGl2ZSB0eXBlZGVmIGF0b21pY19pbnQ7Ci0vLyBuYXRpdmUgdHlwZWRl
ZiBhdG9taWNfdWludDsKK25hdGl2ZSB0eXBlZGVmIGF0b21pY19pbnQ7CituYXRpdmUgdHlwZWRl
ZiBhdG9taWNfdWludDsKKworbmF0aXZlIHR5cGVkZWYgdmVjdG9yPGJvb2wsIDI+OwordHlwZWRl
ZiBib29sMiA9IHZlY3Rvcjxib29sLCAyPjsKK25hdGl2ZSB0eXBlZGVmIHZlY3Rvcjxib29sLCAz
PjsKK3R5cGVkZWYgYm9vbDMgPSB2ZWN0b3I8Ym9vbCwgMz47CituYXRpdmUgdHlwZWRlZiB2ZWN0
b3I8Ym9vbCwgND47Cit0eXBlZGVmIGJvb2w0ID0gdmVjdG9yPGJvb2wsIDQ+OworbmF0aXZlIHR5
cGVkZWYgdmVjdG9yPHVjaGFyLCAyPjsKK3R5cGVkZWYgdWNoYXIyID0gdmVjdG9yPHVjaGFyLCAy
PjsKK25hdGl2ZSB0eXBlZGVmIHZlY3Rvcjx1Y2hhciwgMz47Cit0eXBlZGVmIHVjaGFyMyA9IHZl
Y3Rvcjx1Y2hhciwgMz47CituYXRpdmUgdHlwZWRlZiB2ZWN0b3I8dWNoYXIsIDQ+OwordHlwZWRl
ZiB1Y2hhcjQgPSB2ZWN0b3I8dWNoYXIsIDQ+OworbmF0aXZlIHR5cGVkZWYgdmVjdG9yPHVzaG9y
dCwgMj47Cit0eXBlZGVmIHVzaG9ydDIgPSB2ZWN0b3I8dXNob3J0LCAyPjsKK25hdGl2ZSB0eXBl
ZGVmIHZlY3Rvcjx1c2hvcnQsIDM+OwordHlwZWRlZiB1c2hvcnQzID0gdmVjdG9yPHVzaG9ydCwg
Mz47CituYXRpdmUgdHlwZWRlZiB2ZWN0b3I8dXNob3J0LCA0PjsKK3R5cGVkZWYgdXNob3J0NCA9
IHZlY3Rvcjx1c2hvcnQsIDQ+OworbmF0aXZlIHR5cGVkZWYgdmVjdG9yPHVpbnQsIDI+OwordHlw
ZWRlZiB1aW50MiA9IHZlY3Rvcjx1aW50LCAyPjsKK25hdGl2ZSB0eXBlZGVmIHZlY3Rvcjx1aW50
LCAzPjsKK3R5cGVkZWYgdWludDMgPSB2ZWN0b3I8dWludCwgMz47CituYXRpdmUgdHlwZWRlZiB2
ZWN0b3I8dWludCwgND47Cit0eXBlZGVmIHVpbnQ0ID0gdmVjdG9yPHVpbnQsIDQ+OworbmF0aXZl
IHR5cGVkZWYgdmVjdG9yPGNoYXIsIDI+OwordHlwZWRlZiBjaGFyMiA9IHZlY3RvcjxjaGFyLCAy
PjsKK25hdGl2ZSB0eXBlZGVmIHZlY3RvcjxjaGFyLCAzPjsKK3R5cGVkZWYgY2hhcjMgPSB2ZWN0
b3I8Y2hhciwgMz47CituYXRpdmUgdHlwZWRlZiB2ZWN0b3I8Y2hhciwgND47Cit0eXBlZGVmIGNo
YXI0ID0gdmVjdG9yPGNoYXIsIDQ+OworbmF0aXZlIHR5cGVkZWYgdmVjdG9yPHNob3J0LCAyPjsK
K3R5cGVkZWYgc2hvcnQyID0gdmVjdG9yPHNob3J0LCAyPjsKK25hdGl2ZSB0eXBlZGVmIHZlY3Rv
cjxzaG9ydCwgMz47Cit0eXBlZGVmIHNob3J0MyA9IHZlY3RvcjxzaG9ydCwgMz47CituYXRpdmUg
dHlwZWRlZiB2ZWN0b3I8c2hvcnQsIDQ+OwordHlwZWRlZiBzaG9ydDQgPSB2ZWN0b3I8c2hvcnQs
IDQ+OworbmF0aXZlIHR5cGVkZWYgdmVjdG9yPGludCwgMj47Cit0eXBlZGVmIGludDIgPSB2ZWN0
b3I8aW50LCAyPjsKK25hdGl2ZSB0eXBlZGVmIHZlY3RvcjxpbnQsIDM+OwordHlwZWRlZiBpbnQz
ID0gdmVjdG9yPGludCwgMz47CituYXRpdmUgdHlwZWRlZiB2ZWN0b3I8aW50LCA0PjsKK3R5cGVk
ZWYgaW50NCA9IHZlY3RvcjxpbnQsIDQ+OworbmF0aXZlIHR5cGVkZWYgdmVjdG9yPGhhbGYsIDI+
OwordHlwZWRlZiBoYWxmMiA9IHZlY3RvcjxoYWxmLCAyPjsKK25hdGl2ZSB0eXBlZGVmIHZlY3Rv
cjxoYWxmLCAzPjsKK3R5cGVkZWYgaGFsZjMgPSB2ZWN0b3I8aGFsZiwgMz47CituYXRpdmUgdHlw
ZWRlZiB2ZWN0b3I8aGFsZiwgND47Cit0eXBlZGVmIGhhbGY0ID0gdmVjdG9yPGhhbGYsIDQ+Owor
bmF0aXZlIHR5cGVkZWYgdmVjdG9yPGZsb2F0LCAyPjsKK3R5cGVkZWYgZmxvYXQyID0gdmVjdG9y
PGZsb2F0LCAyPjsKK25hdGl2ZSB0eXBlZGVmIHZlY3RvcjxmbG9hdCwgMz47Cit0eXBlZGVmIGZs
b2F0MyA9IHZlY3RvcjxmbG9hdCwgMz47CituYXRpdmUgdHlwZWRlZiB2ZWN0b3I8ZmxvYXQsIDQ+
OwordHlwZWRlZiBmbG9hdDQgPSB2ZWN0b3I8ZmxvYXQsIDQ+OwogCiBuYXRpdmUgb3BlcmF0b3Ig
aW50KHVpbnQpOwogbmF0aXZlIG9wZXJhdG9yIGludCh1Y2hhcik7CkBAIC0xNDcsMjggKzIwMCwx
MiBAQCBib29sIG9wZXJhdG9yfihib29sIHZhbHVlKQogewogICAgIHJldHVybiAhdmFsdWU7CiB9
Ci0KLW5hdGl2ZSB0eXBlZGVmIHVjaGFyMjsKLW5hdGl2ZSB0eXBlZGVmIHVjaGFyMzsKLW5hdGl2
ZSB0eXBlZGVmIHVjaGFyNDsKLQotbmF0aXZlIHR5cGVkZWYgdWludDI7Ci1uYXRpdmUgdHlwZWRl
ZiB1aW50MzsKLW5hdGl2ZSB0eXBlZGVmIHVpbnQ0OwotCi1uYXRpdmUgdHlwZWRlZiBpbnQyOwot
bmF0aXZlIHR5cGVkZWYgaW50MzsKLW5hdGl2ZSB0eXBlZGVmIGludDQ7Ci0KLW5hdGl2ZSB0eXBl
ZGVmIGZsb2F0MjsKLW5hdGl2ZSB0eXBlZGVmIGZsb2F0MzsKLW5hdGl2ZSB0eXBlZGVmIGZsb2F0
NDsKIGA7CiAKIC8vIEZJWE1FOiBPbmNlIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGhhcyBiZWVuIHJl
cGxhY2VkIHdpdGggYSBuZXcgdmVyc2lvbiwgdGhpcyBjb21tZW50cyBzaG91bGQgYmUgcmVtb3Zl
ZC4KIC8vIFRoaXMgbGlzdCBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhdmFpbGFiaWxpdHkgb2Yg
dmVjdG9yIHR5cGVzIGF2YWlsYWJsZSBpbiB0aGUgbGFuZ2F1Z2UuCiAvLyBQZXJtaXNzaWJsZSB2
ZWN0b3IgZWxlbWVudCB0eXBlcyBtdXN0IGFwcGVhciBpbiB0aGlzIGxpc3QgYW5kIGluIHRoZSBz
dGFuZGFyZCBsaWJyYXJ5Ci1jb25zdCBWZWN0b3JFbGVtZW50VHlwZXMgPSBbIC8qImJvb2wiLCov
ICJ1Y2hhciIsIC8qImNoYXIiLCAidXNob3J0IiwgInNob3J0IiwqLyAidWludCIsICJpbnQiLCAv
KiAiaGFsZiIsICovImZsb2F0IiBdOworY29uc3QgVmVjdG9yRWxlbWVudFR5cGVzID0gWyAiYm9v
bCIsICJ1Y2hhciIsICJjaGFyIiwgInVzaG9ydCIsICJzaG9ydCIsICJ1aW50IiwgImludCIsICJo
YWxmIiwgImZsb2F0IiBdOwogY29uc3QgVmVjdG9yRWxlbWVudFNpemVzID0gWyAyLCAzLCA0IF07
CiAKIGZ1bmN0aW9uIGFsbFZlY3RvclR5cGVOYW1lcygpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9TdGF0ZW1lbnRDbG9uZXIuanMgYi9Ub29scy9XZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9TdGF0ZW1lbnRDbG9uZXIuanMKaW5kZXggYjM5NDhjNDUwYzcxNjA5Nzc5
NzVlZDRlOGU5OGVkOTljNGY3YTA1OS4uMGQwNzE1YTk4NTRkZWYxYmZkMmE4MDhjNzQwNDExMmJh
MWE0YTBjMSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhdGVt
ZW50Q2xvbmVyLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0YXRlbWVu
dENsb25lci5qcwpAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBTdGF0ZW1lbnRDbG9uZXIgZXh0ZW5k
cyBSZXdyaXRlciB7CiAgICAgCiAgICAgdmlzaXROYXRpdmVUeXBlKG5vZGUpCiAgICAgewotICAg
ICAgICByZXR1cm4gbmV3IE5hdGl2ZVR5cGUobm9kZS5vcmlnaW4sIG5vZGUubmFtZSk7CisgICAg
ICAgIHJldHVybiBuZXcgTmF0aXZlVHlwZShub2RlLm9yaWdpbiwgbm9kZS5uYW1lLCBub2RlLnR5
cGVBcmd1bWVudHMubWFwKGFyZ3VtZW50ID0+IGFyZ3VtZW50LnZpc2l0KHRoaXMpKSk7CiAgICAg
fQogICAgIAogICAgIHZpc2l0VHlwZURlZihub2RlKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6ZURlZmF1bHRDb25zdHJ1Y3Rvck9wZXJhdG9yLmpz
IGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6ZURlZmF1bHRDb25zdHJ1
Y3Rvck9wZXJhdG9yLmpzCmluZGV4IGZlZmU5YzAzZDdiMTBiMzExNmIzYjY3ZjJhZjA1N2YxNmZj
MTUxNmMuLjNhM2Y3NjczODY3YjlhYWIwMTMyMjE4MDM1Njg3MzhjMTYzYTU2N2UgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N5bnRoZXNpemVEZWZhdWx0Q29uc3Ry
dWN0b3JPcGVyYXRvci5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TeW50
aGVzaXplRGVmYXVsdENvbnN0cnVjdG9yT3BlcmF0b3IuanMKQEAgLTQ1LDYgKzQ1LDEyIEBAIGZ1
bmN0aW9uIHN5bnRoZXNpemVEZWZhdWx0Q29uc3RydWN0b3JPcGVyYXRvcihwcm9ncmFtKQogICAg
ICAgICAgICAgdHlwZXMuYWRkKG5vZGUpOwogICAgICAgICAgICAgc3VwZXIudmlzaXRFbGVtZW50
YWxUeXBlKG5vZGUpOwogICAgICAgICB9CisKKyAgICAgICAgdmlzaXRWZWN0b3JUeXBlKG5vZGUp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHR5cGVzLmFkZChub2RlKTsKKyAgICAgICAgICAgIHN1
cGVyLnZpc2l0VmVjdG9yVHlwZShub2RlKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHByb2dy
YW0udmlzaXQobmV3IEZpbmRBbGxUeXBlcygpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL1N5bnRoZXNpemVTdHJ1Y3RBY2Nlc3NvcnMuanMgYi9Ub29scy9XZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9TeW50aGVzaXplU3RydWN0QWNjZXNzb3JzLmpzCmluZGV4IGJm
ZTYwNDQ5NGRjNzI1YWU3ZTc0YWQ0YTBiZmUyM2U5M2MwOTE3NzYuLmEwMTgxNDY4YTI1ZWQ0YzA5
MDUwZDdiZjFkNjFmNDRlZDNhMGFhNjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL1N5bnRoZXNpemVTdHJ1Y3RBY2Nlc3NvcnMuanMKKysrIGIvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6ZVN0cnVjdEFjY2Vzc29ycy5qcwpAQCAtNTEsNyAr
NTEsNyBAQCBmdW5jdGlvbiBzeW50aGVzaXplU3RydWN0QWNjZXNzb3JzKHByb2dyYW0pCiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIGZ1bmN0aW9uIGNyZWF0ZVR5cGVSZWYoKQogICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIHJldHVybiBUeXBlUmVmLmluc3RhbnRpYXRlKHR5cGUpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBUeXBlUmVmLndyYXAodHlwZSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGxldCBpc0Nhc3QgPSBmYWxzZTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuaHRtbCBiL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuaHRtbAppbmRleCAxM2YzNTgyMzk5MjlkOGEzZTZhY2U1
MjU0NWI5MWNhNTJkNjA2MGU0Li4wZGU2OTQxZDU5MDJmMGRjY2Y0ODhjOTQ1MTU1YzFmYTNhYjVi
YjljIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0bWwK
KysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5odG1sCkBAIC0zNyw2ICsz
Nyw3IEBACiA8c2NyaXB0IHNyYz0iQ2hlY2tSZWN1cnNpb24uanMiPjwvc2NyaXB0PgogPHNjcmlw
dCBzcmM9IkNoZWNrUmVjdXJzaXZlVHlwZXMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkNo
ZWNrUmV0dXJucy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iQ2hlY2tUeXBlc1dpdGhBcmd1
bWVudHMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkNoZWNrVW5yZWFjaGFibGVDb2RlLmpz
Ij48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJDaGVja1dyYXBwZWQuanMiPjwvc2NyaXB0PgogPHNj
cmlwdCBzcmM9IkNoZWNrZXIuanMiPjwvc2NyaXB0PgpAQCAtMTEwLDcgKzExMSw2IEBACiA8c2Ny
aXB0IHNyYz0iUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0
IHNyYz0iUmVjdXJzaW9uQ2hlY2tlci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iUmVjdXJz
aXZlVHlwZUNoZWNrZXIuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9IlJlbW92ZVR5cGVBcmd1
bWVudHMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlJlc29sdmVOYW1lcy5qcyI+PC9zY3Jp
cHQ+CiA8c2NyaXB0IHNyYz0iUmVzb2x2ZU92ZXJsb2FkSW1wbC5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0IHNyYz0iUmVzb2x2ZVByb3BlcnRpZXMuanMiPjwvc2NyaXB0PgpAQCAtMTM0LDYgKzEzNCw3
IEBACiA8c2NyaXB0IHNyYz0iVHlwZURlZi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iVHlw
ZURlZlJlc29sdmVyLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJUeXBlUmVmLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJUeXBlT3ZlcmxvYWRSZXNvbHV0aW9uRmFpbHVyZS5qcyI+PC9z
Y3JpcHQ+CiA8c2NyaXB0IHNyYz0iVHlwZWRWYWx1ZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNy
Yz0iVWludExpdGVyYWwuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlVpbnRMaXRlcmFsVHlw
ZS5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9UZXN0LmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5qcwppbmRleCBk
ZjQxN2RhYmY2ZDg3MTM1ZTczNWNhOGM5YjFiZjEzYWI2NDA3NWExLi5iZmZiY2YwYjJjYjZkY2Iy
NTdmMWZjMzk5MmU4ZWM2NTM0NDU2ZDljIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9UZXN0LmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rl
c3QuanMKQEAgLTI4ODEsNyArMjg4MSw3IEBAIHRlc3RzLnNoYWRlclR5cGVzID0gZnVuY3Rpb24o
KQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZnJhZ21lbnQgQm9vIGJhcihGb28gc3RhZ2VJ
bikKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gYm9vKCk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIEJvbygpOwogICAgICAgICAgICAgfQogICAgICAgICBgKSwKICAgICAg
ICAgKGUpID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yKTsKQEAgLTI5MDQsNyArMjkwNCw3IEBA
IHRlc3RzLnNoYWRlclR5cGVzID0gZnVuY3Rpb24oKQogCiB0ZXN0cy52ZWN0b3JUeXBlU3ludGF4
ID0gZnVuY3Rpb24oKQogewotICAgIGNvbnN0IHByb2dyYW0gPSBkb1ByZXAoYAorICAgIGxldCBw
cm9ncmFtID0gZG9QcmVwKGAKICAgICAgICAgaW50IGZvbzIoKQogICAgICAgICB7CiAgICAgICAg
ICAgICBpbnQyIHg7CkBAIC0yOTM5LDcgKzI5MzksMjYgQEAgdGVzdHMudmVjdG9yVHlwZVN5bnRh
eCA9IGZ1bmN0aW9uKCkKICAgICBjaGVja0ludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3Jh
bSwgImZvbzIiLCBbXSksIDQpOwogICAgIGNoZWNrSW50KHByb2dyYW0sIGNhbGxGdW5jdGlvbihw
cm9ncmFtLCAiZm9vMyIsIFtdKSwgNSk7CiAgICAgY2hlY2tJbnQocHJvZ3JhbSwgY2FsbEZ1bmN0
aW9uKHByb2dyYW0sICJmb280IiwgW10pLCA2KTsKKyAgICBjaGVja0Jvb2wocHJvZ3JhbSwgY2Fs
bEZ1bmN0aW9uKHByb2dyYW0sICJ2ZWMyT3BlcmF0b3JDYXN0IiwgW10pLCB0cnVlKTsKKworICAg
IHByb2dyYW0gPSBkb1ByZXAoYAorICAgICAgICB0eXBlZGVmIGkgPSBpbnQ7CisgICAgICAgIGlu
dCBmb28yKCkKKyAgICAgICAgeworICAgICAgICAgICAgaW50MiB4OworICAgICAgICAgICAgdmVj
dG9yPGksIDI+IHogPSBpbnQyKDMsIDQpOworICAgICAgICAgICAgeCA9IHo7CisgICAgICAgICAg
ICByZXR1cm4geC55OworICAgICAgICB9CisKKyAgICAgICAgYm9vbCB2ZWMyT3BlcmF0b3JDYXN0
KCkKKyAgICAgICAgeworICAgICAgICAgICAgaW50MiB4ID0gdmVjdG9yPGksMj4oMSwgMik7Cisg
ICAgICAgICAgICB2ZWN0b3I8aSwgMj4geSA9IGludDIoMSwgMik7CisgICAgICAgICAgICByZXR1
cm4geCA9PSB5ICYmIHgueCA9PSAxICYmIHgueSA9PSAyICYmIHkueCA9PSAxICYmIHkueSA9PSAy
OworICAgICAgICB9YCk7CiAKKyAgICBjaGVja0ludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJv
Z3JhbSwgImZvbzIiLCBbXSksIDQpOwogICAgIGNoZWNrQm9vbChwcm9ncmFtLCBjYWxsRnVuY3Rp
b24ocHJvZ3JhbSwgInZlYzJPcGVyYXRvckNhc3QiLCBbXSksIHRydWUpOwogfQogCmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UeXBlT3ZlcmxvYWRSZXNvbHV0aW9u
RmFpbHVyZS5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1R5cGVPdmVybG9hZFJl
c29sdXRpb25GYWlsdXJlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ1Y2IzZjcxMGZhMGNlMDNkMjkwMmZhMzJl
ZDhiMDI3NWZiNjI2MDgKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9UeXBlT3ZlcmxvYWRSZXNvbHV0aW9uRmFpbHVyZS5qcwpAQCAtMCwwICsxLDQyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisidXNlIHN0cmlj
dCI7CisKK2NsYXNzIFR5cGVPdmVybG9hZFJlc29sdXRpb25GYWlsdXJlIHsKKyAgICBjb25zdHJ1
Y3Rvcih0eXBlLCByZWFzb24pCisgICAgeworICAgICAgICB0aGlzLl90eXBlID0gdHlwZTsKKyAg
ICAgICAgdGhpcy5fcmVhc29uID0gcmVhc29uOworICAgIH0KKyAgICAKKyAgICBnZXQgdHlwZSgp
IHsgcmV0dXJuIHRoaXMuX3R5cGU7IH0KKyAgICBnZXQgcmVhc29uKCkgeyByZXR1cm4gdGhpcy5f
cmVhc29uOyB9CisgICAgCisgICAgdG9TdHJpbmcoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMudHlwZS50b1N0cmluZygpICsgIiBkaWQgbm90IG1hdGNoIGJlY2F1c2U6ICIgKyB0aGlzLnJl
YXNvbjsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL1R5cGVSZWYuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UeXBlUmVmLmpz
CmluZGV4IGI1ZjNjMGIzZDkyNTMyZTA1YzY4MDA1NGExNjFmMDVlMGRkZDY0NmIuLmUxNTI4MTRj
MGM3YjEyNzdhNzcxY2U0NGVkZDkyMGEzMDdkODhlYjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL1R5cGVSZWYuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvVHlwZVJlZi5qcwpAQCAtMjUsMTIgKzI1LDEzIEBACiAidXNlIHN0cmljdCI7CiAK
IGNsYXNzIFR5cGVSZWYgZXh0ZW5kcyBUeXBlIHsKLSAgICBjb25zdHJ1Y3RvcihvcmlnaW4sIG5h
bWUsIHR5cGVBcmd1bWVudHMgPSBudWxsKQorICAgIGNvbnN0cnVjdG9yKG9yaWdpbiwgbmFtZSwg
dHlwZUFyZ3VtZW50cyA9IFtdKQogICAgIHsKICAgICAgICAgc3VwZXIoKTsKICAgICAgICAgdGhp
cy5fb3JpZ2luID0gb3JpZ2luOwogICAgICAgICB0aGlzLl9uYW1lID0gbmFtZTsKICAgICAgICAg
dGhpcy5fdHlwZSA9IG51bGw7CisgICAgICAgIHRoaXMuX3Bvc3NpYmxlT3ZlcmxvYWRzID0gbnVs
bDsKICAgICAgICAgdGhpcy5fdHlwZUFyZ3VtZW50cyA9IHR5cGVBcmd1bWVudHM7CiAgICAgfQog
ICAgIApAQCAtMzgsMTQgKzM5LDExIEBAIGNsYXNzIFR5cGVSZWYgZXh0ZW5kcyBUeXBlIHsKICAg
ICB7CiAgICAgICAgIGlmICh0eXBlIGluc3RhbmNlb2YgVHlwZVJlZikKICAgICAgICAgICAgIHJl
dHVybiB0eXBlOwotICAgICAgICBsZXQgcmVzdWx0ID0gbmV3IFR5cGVSZWYodHlwZS5vcmlnaW4s
IHR5cGUubmFtZSk7Ci0gICAgICAgIHJlc3VsdC50eXBlID0gdHlwZTsKLSAgICAgICAgcmV0dXJu
IHJlc3VsdDsKLSAgICB9Ci0gICAgCi0gICAgc3RhdGljIGluc3RhbnRpYXRlKHR5cGUpCi0gICAg
ewotICAgICAgICBsZXQgcmVzdWx0ID0gbmV3IFR5cGVSZWYodHlwZS5vcmlnaW4sIHR5cGUubmFt
ZSk7CisgICAgICAgIGxldCByZXN1bHQ7CisgICAgICAgIGlmICh0eXBlIGluc3RhbmNlb2YgTmF0
aXZlVHlwZSkKKyAgICAgICAgICAgIHJlc3VsdCA9IG5ldyBUeXBlUmVmKHR5cGUub3JpZ2luLCB0
eXBlLm5hbWUsIHR5cGUudHlwZUFyZ3VtZW50cyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IHJlc3VsdCA9IG5ldyBUeXBlUmVmKHR5cGUub3JnaW4sIHR5cGUubmFtZSk7CiAgICAgICAgIHJl
c3VsdC50eXBlID0gdHlwZTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC02Myw2
ICs2MSw1MiBAQCBjbGFzcyBUeXBlUmVmIGV4dGVuZHMgVHlwZSB7CiAgICAgewogICAgICAgICB0
aGlzLl90eXBlID0gbmV3VHlwZTsKICAgICB9CisgICAgCisgICAgZ2V0IHBvc3NpYmxlT3Zlcmxv
YWRzKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9wb3NzaWJsZU92ZXJsb2FkczsKKyAg
ICB9CisKKyAgICBzZXQgcG9zc2libGVPdmVybG9hZHMobmV3T3ZlcmxvYWRzKQorICAgIHsKKyAg
ICAgICAgaWYgKHRoaXMudHlwZSkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiVHlwZVJl
ZnMgd2l0aCBrbm93biB0eXBlIHNob3VsZCBub3QgaGF2ZSBvdmVybG9hZHMuIik7CisgICAgICAg
IHRoaXMuX3Bvc3NpYmxlT3ZlcmxvYWRzID0gbmV3T3ZlcmxvYWRzOworICAgIH0KKworICAgIHJl
c29sdmUocG9zc2libGVPdmVybG9hZHMsIHByb2dyYW0pCisgICAgeworICAgICAgICBpZiAoIXBv
c3NpYmxlT3ZlcmxvYWRzKQorICAgICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3IodGhpcy5v
cmlnaW4ub3JpZ2luU3RyaW5nLCAiRGlkIG5vdCBmaW5kIGFueSB0eXBlcyBuYW1lZCAiICsgdGhp
cy5uYW1lKTsKKworICAgICAgICBsZXQgZmFpbHVyZXMgPSBbXTsKKyAgICAgICAgbGV0IG92ZXJs
b2FkID0gcmVzb2x2ZVR5cGVPdmVybG9hZEltcGwocG9zc2libGVPdmVybG9hZHMsIHRoaXMudHlw
ZUFyZ3VtZW50cyk7CisKKyAgICAgICAgaWYgKCFvdmVybG9hZC50eXBlKSB7CisgICAgICAgICAg
ICBmYWlsdXJlcy5wdXNoKC4uLm92ZXJsb2FkLmZhaWx1cmVzKTsKKyAgICAgICAgICAgIGxldCBt
ZXNzYWdlID0gIkRpZCBub3QgZmluZCB0eXBlIG5hbWVkICIgKyB0aGlzLm5hbWUgKyAiIGZvciB0
eXBlIGFyZ3VtZW50cyAiOworICAgICAgICAgICAgbWVzc2FnZSArPSAiKCIgKyB0aGlzLnR5cGVB
cmd1bWVudHMgKyAiKSI7CisgICAgICAgICAgICBpZiAoZmFpbHVyZXMubGVuZ3RoKQorICAgICAg
ICAgICAgICAgIG1lc3NhZ2UgKz0gIiwgYnV0IGNvbnNpZGVyZWQ6XG4iICsgZmFpbHVyZXMuam9p
bigiXG4iKQorICAgICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3IodGhpcy5vcmlnaW4ub3Jp
Z2luU3RyaW5nLCBtZXNzYWdlKTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgdGhpcy50eXBlQXJndW1lbnRzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBsZXQg
dHlwZUFyZ3VtZW50ID0gdGhpcy50eXBlQXJndW1lbnRzW2ldOworICAgICAgICAgICAgbGV0IHJl
c29sdmVkVHlwZUFyZ3VtZW50ID0gb3ZlcmxvYWQudHlwZS50eXBlQXJndW1lbnRzW2ldOworICAg
ICAgICAgICAgbGV0IHJlc3VsdCA9IHR5cGVBcmd1bWVudC5lcXVhbHNXaXRoQ29tbWl0KHJlc29s
dmVkVHlwZUFyZ3VtZW50KTsKKyAgICAgICAgICAgIGlmICghcmVzdWx0KQorICAgICAgICAgICAg
ICAgIHRocm93IG5ldyBFcnJvcigiQXQgIiArIHRoaXMub3JpZ2luLm9yaWdpblN0cmluZyArICIg
YXJndW1lbnQgdHlwZXMgZm9yIFR5cGUgYW5kIFR5cGVSZWYgbm90IGVxdWFsOiBhcmd1bWVudCB0
eXBlID0gIiArIHR5cGVBcmd1bWVudCArICIsIHJlc29sdmVkIHR5cGUgYXJndW1lbnQgPSAiICsg
cmVzb2x2ZWRUeXBlQXJndW1lbnQpOworICAgICAgICAgICAgaWYgKHJlc29sdmVkVHlwZUFyZ3Vt
ZW50LmNvbnN0cnVjdG9yLm5hbWUgPT0gIkdlbmVyaWNMaXRlcmFsIikgeworICAgICAgICAgICAg
ICAgIC8vIEZJWE1FOiBUaGlzIGlzIHByb2JhYmx5IHdyb25nLgorICAgICAgICAgICAgICAgIHJl
c3VsdCA9IHR5cGVBcmd1bWVudC50eXBlLmVxdWFsc1dpdGhDb21taXQocmVzb2x2ZWRUeXBlQXJn
dW1lbnQudHlwZSk7CisgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpCisgICAgICAgICAgICAg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiQXQgIiArIHRoaXMub3JpZ2luLm9yaWdpblN0cmluZyAr
ICIgYXJndW1lbnQgdHlwZXMgZm9yIFR5cGUgYW5kIFR5cGVSZWYgbm90IGVxdWFsOiBhcmd1bWVu
dCB0eXBlID0gIiArIHR5cGVBcmd1bWVudCArICIsIHJlc29sdmVkIHR5cGUgYXJndW1lbnQgPSAi
ICsgcmVzb2x2ZWRUeXBlQXJndW1lbnQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IAorICAgICAgICB9CisgICAgICAgIHRoaXMudHlwZSA9IG92ZXJsb2FkLnR5cGU7CisgICAgfQog
CiAgICAgZ2V0IHVuaWZ5Tm9kZSgpCiAgICAgewpAQCAtOTksNyArMTQzLDEwIEBAIGNsYXNzIFR5
cGVSZWYgZXh0ZW5kcyBUeXBlIHsKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5uYW1lKQogICAg
ICAgICAgICAgcmV0dXJuIHRoaXMudHlwZS50b1N0cmluZygpOwotICAgICAgICByZXR1cm4gdGhp
cy5uYW1lOworICAgICAgICBsZXQgcmVzdWx0ID0gdGhpcy5uYW1lOworICAgICAgICBpZiAodGhp
cy50eXBlQXJndW1lbnRzLmxlbmd0aCA+IDApCisgICAgICAgICAgICByZXN1bHQgKz0gIjwiICsg
dGhpcy50eXBlQXJndW1lbnRzLm1hcChhcmd1bWVudCA9PiBhcmd1bWVudC50b1N0cmluZygpKS5q
b2luKCIsIikgKyAiPiI7CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogfQogCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9VbmlmaWNhdGlvbkNvbnRleHQu
anMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9VbmlmaWNhdGlvbkNvbnRleHQuanMK
aW5kZXggMmY3MTU0N2IwYWZiZTE4MDM3OGYzNzk5NjIzMTg2MmEyYjkxYTgyZS4uMzgxOTE2OTcy
MjNlZjcyMWE1Mzc5MTRiMzY5ODk3Njc4MWZlNmU2ZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvVW5pZmljYXRpb25Db250ZXh0LmpzCisrKyBiL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL1VuaWZpY2F0aW9uQ29udGV4dC5qcwpAQCAtOTIsNiArOTIsMTkg
QEAgY2xhc3MgVW5pZmljYXRpb25Db250ZXh0IHsKICAgICAKICAgICB2ZXJpZnkoKQogICAgIHsK
KyAgICAgICAgLy8gV2UgZG8gYSB0d28tcGhhc2UgcHJlLXZlcmlmaWNhdGlvbi4gVGhpcyBnaXZl
cyBsaXRlcmFscyBhIGNoYW5jZSB0byBzZWxlY3QgYSBtb3JlIHNwZWNpZmljIHR5cGUuCisgICAg
ICAgIGxldCBwcmVwYXJhdGlvbnMgPSBbXTsKKyAgICAgICAgZm9yIChsZXQgbm9kZSBvZiB0aGlz
Lm5vZGVzKSB7CisgICAgICAgICAgICBsZXQgcHJlcGFyYXRpb24gPSBub2RlLnByZXBhcmVUb1Zl
cmlmeSh0aGlzKTsKKyAgICAgICAgICAgIGlmIChwcmVwYXJhdGlvbikKKyAgICAgICAgICAgICAg
ICBwcmVwYXJhdGlvbnMucHVzaChwcmVwYXJhdGlvbik7CisgICAgICAgIH0KKyAgICAgICAgZm9y
IChsZXQgcHJlcGFyYXRpb24gb2YgcHJlcGFyYXRpb25zKSB7CisgICAgICAgICAgICBsZXQgcmVz
dWx0ID0gcHJlcGFyYXRpb24oKTsKKyAgICAgICAgICAgIGlmICghcmVzdWx0LnJlc3VsdCkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisKICAgICAgICAgZm9yIChs
ZXQgdHlwZUFyZ3VtZW50IG9mIHRoaXMudHlwZUFyZ3VtZW50cygpKSB7CiAgICAgICAgICAgICBs
ZXQgcmVzdWx0ID0gdHlwZUFyZ3VtZW50LnZlcmlmeUFzQXJndW1lbnQodGhpcyk7CiAgICAgICAg
ICAgICBpZiAoIXJlc3VsdC5yZXN1bHQpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9WZWN0b3JUeXBlLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
VmVjdG9yVHlwZS5qcwppbmRleCA1MDE0YzY3MWEwNzg4MjAwMmMyMzRiYjMyZjE3Yzg4NjBlZmZj
MWM2Li5kZjBjYmMyYzczMDhmNDU0MTNjYmNjMjhkODk2MjFiYzAzYWIyNjA0IDEwMDY0NAotLS0g
YS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9WZWN0b3JUeXBlLmpzCisrKyBiL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1ZlY3RvclR5cGUuanMKQEAgLTI1LDE5ICsyNSwxNCBA
QAogInVzZSBzdHJpY3QiOwogCiBjbGFzcyBWZWN0b3JUeXBlIGV4dGVuZHMgTmF0aXZlVHlwZSB7
Ci0gICAgY29uc3RydWN0b3Iob3JpZ2luLCBuYW1lKQorICAgIGNvbnN0cnVjdG9yKG9yaWdpbiwg
bmFtZSwgdHlwZUFyZ3VtZW50cykKICAgICB7Ci0gICAgICAgIHN1cGVyKG9yaWdpbiwgbmFtZSk7
Ci0gICAgICAgIGNvbnN0IG1hdGNoID0gL14oW0Etel0rKShbMC05XSkkLy5leGVjKG5hbWUpOwot
ICAgICAgICBpZiAoIW1hdGNoKQotICAgICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3Iob3Jp
Z2luLm9yaWdpblN0cmluZywgYCR7bmFtZX0gZG9lc24ndCBtYXRjaCB0aGUgZm9ybWF0IGZvciB2
ZWN0b3IgdHlwZSBuYW1lcy4nYCk7Ci0KLSAgICAgICAgdGhpcy5fZWxlbWVudFR5cGUgPSBuZXcg
VHlwZVJlZihvcmlnaW4sIG1hdGNoWzFdKTsKLSAgICAgICAgdGhpcy5fbnVtRWxlbWVudHNWYWx1
ZSA9IHBhcnNlSW50KG1hdGNoWzJdKTsKKyAgICAgICAgc3VwZXIob3JpZ2luLCBuYW1lLCB0eXBl
QXJndW1lbnRzKTsKICAgICB9CiAKLSAgICBnZXQgZWxlbWVudFR5cGUoKSB7IHJldHVybiB0aGlz
Ll9lbGVtZW50VHlwZTsgfQotICAgIGdldCBudW1FbGVtZW50c1ZhbHVlKCkgeyByZXR1cm4gdGhp
cy5fbnVtRWxlbWVudHNWYWx1ZTsgfQorICAgIGdldCBlbGVtZW50VHlwZSgpIHsgcmV0dXJuIHRo
aXMudHlwZUFyZ3VtZW50c1swXTsgfQorICAgIGdldCBudW1FbGVtZW50cygpIHsgcmV0dXJuIHRo
aXMudHlwZUFyZ3VtZW50c1sxXTsgfQorICAgIGdldCBudW1FbGVtZW50c1ZhbHVlKCkgeyByZXR1
cm4gdGhpcy5udW1FbGVtZW50cy52YWx1ZTsgfQogICAgIGdldCBzaXplKCkgeyByZXR1cm4gdGhp
cy5lbGVtZW50VHlwZS5zaXplICogdGhpcy5udW1FbGVtZW50c1ZhbHVlOyB9CiAKICAgICB1bmlm
eUltcGwodW5pZmljYXRpb25Db250ZXh0LCBvdGhlcikKQEAgLTU5LDcgKzU0LDcgQEAgY2xhc3Mg
VmVjdG9yVHlwZSBleHRlbmRzIE5hdGl2ZVR5cGUgewogCiAgICAgdG9TdHJpbmcoKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGBuYXRpdmUgdHlwZWRlZiAke3RoaXMuZWxlbWVudFR5cGV9JHt0aGlz
Lm51bUVsZW1lbnRzVmFsdWV9YDsKKyAgICAgICAgcmV0dXJuIGBuYXRpdmUgdHlwZWRlZiB2ZWN0
b3I8JHt0aGlzLmVsZW1lbnRUeXBlfSwgJHt0aGlzLm51bUVsZW1lbnRzVmFsdWV9PmA7CiAgICAg
fQogfQogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9WaXNpdG9y
LmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVmlzaXRvci5qcwppbmRleCA3ZDM4
N2IyNWYyNTg5Yjg3MzkxOGFmMmY0NGMyNDM0YWQ2NTg3NDdmLi42MGRmY2ViZjFhZTFkNTk4ZDMy
OTgwZDU2ZDc4NGYxNDUzOGQ1NTNjIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9WaXNpdG9yLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Zp
c2l0b3IuanMKQEAgLTY4LDEwICs2OCwxNCBAQCBjbGFzcyBWaXNpdG9yIHsKICAgICAKICAgICB2
aXNpdFR5cGVSZWYobm9kZSkKICAgICB7CisgICAgICAgIGZvciAobGV0IHR5cGVBcmd1bWVudCBv
ZiBub2RlLnR5cGVBcmd1bWVudHMpCisgICAgICAgICAgICB0eXBlQXJndW1lbnQudmlzaXQodGhp
cyk7CiAgICAgfQogICAgIAogICAgIHZpc2l0TmF0aXZlVHlwZShub2RlKQogICAgIHsKKyAgICAg
ICAgZm9yIChsZXQgdHlwZUFyZ3VtZW50IG9mIG5vZGUudHlwZUFyZ3VtZW50cykKKyAgICAgICAg
ICAgIHR5cGVBcmd1bWVudC52aXNpdCh0aGlzKTsKICAgICB9CiAgICAgCiAgICAgdmlzaXRUeXBl
RGVmKG5vZGUpCkBAIC0zMjcsNiArMzMxLDcgQEAgY2xhc3MgVmlzaXRvciB7CiAgICAgdmlzaXRW
ZWN0b3JUeXBlKG5vZGUpCiAgICAgewogICAgICAgICBub2RlLmVsZW1lbnRUeXBlLnZpc2l0KHRo
aXMpOworICAgICAgICBub2RlLm51bUVsZW1lbnRzLnZpc2l0KHRoaXMpOwogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvY2hlY2tUeXBlc1dpdGhB
cmd1bWVudHMuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9jaGVja1R5cGVzV2l0
aEFyZ3VtZW50cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYjZiMmJkNDk4ZTc3YjE0OWRmNGM2OGY0ZWYzYWMx
ZmYxY2RhYWIyCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvY2hlY2tUeXBlc1dpdGhBcmd1bWVudHMuanMKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworInVzZSBzdHJpY3QiOworCitmdW5j
dGlvbiBjaGVja1R5cGVzV2l0aEFyZ3VtZW50cyhwcm9ncmFtKQoreworICAgIGNsYXNzIFR5cGVX
aXRoQXJndW1lbnRzQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgeworICAgICAgICB2aXNpdFR5cGVS
ZWYobm9kZSkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG5vZGUubmFtZSA9PSAidmVjdG9y
IiAmJiBub2RlLnR5cGVBcmd1bWVudHMubGVuZ3RoID09IDApCisgICAgICAgICAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCJCdWlsdGluIHR5cGUgJHtub2RlLm5hbWV9IHNob3VsZCBhbHdheXMgaGF2
ZSB0eXBlIGFyZ3VtZW50cy4iKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBwcm9ncmFtLnZpc2l0
KG5ldyBUeXBlV2l0aEFyZ3VtZW50c0NoZWNrZXIoKSk7Cit9CisKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL2luZGV4Lmh0bWwgYi9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9pbmRleC5odG1sCmluZGV4IDRjOTNhMzNlNmEzODY2MmU4YmExZTg0MjQwM2Q0
YzAyZDVlOWY5ZGYuLjljMzFjZTlmNGE4NDc2NDk0NTZlNTQ3NTA3YjBiMzJlMDU2YWNiMWIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL2luZGV4Lmh0bWwKKysrIGIv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvaW5kZXguaHRtbApAQCAtMzgsNiArMzgsNyBA
QAogPHNjcmlwdCBzcmM9IkNoZWNrUmVjdXJzaXZlVHlwZXMuanMiPjwvc2NyaXB0PgogPHNjcmlw
dCBzcmM9IkNoZWNrUmV0dXJucy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iQ2hlY2tVbnJl
YWNoYWJsZUNvZGUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkNoZWNrVHlwZXNXaXRoQXJn
dW1lbnRzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJDaGVja1dyYXBwZWQuanMiPjwvc2Ny
aXB0PgogPHNjcmlwdCBzcmM9IkNoZWNrZXIuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkNs
b25lUHJvZ3JhbS5qcyI+PC9zY3JpcHQ+CkBAIC0xMTAsNyArMTExLDYgQEAKIDxzY3JpcHQgc3Jj
PSJSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJS
ZWN1cnNpb25DaGVja2VyLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJSZWN1cnNpdmVUeXBl
Q2hlY2tlci5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iUmVtb3ZlVHlwZUFyZ3VtZW50cy5q
cyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iUmVzb2x2ZU5hbWVzLmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQgc3JjPSJSZXNvbHZlT3ZlcmxvYWRJbXBsLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3Jj
PSJSZXNvbHZlUHJvcGVydGllcy5qcyI+PC9zY3JpcHQ+CkBAIC0xMzQsNiArMTM0LDcgQEAKIDxz
Y3JpcHQgc3JjPSJUeXBlRGVmLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJUeXBlRGVmUmVz
b2x2ZXIuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlR5cGVSZWYuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9IlR5cGVPdmVybG9hZFJlc29sdXRpb25GYWlsdXJlLmpzIj48L3NjcmlwdD4K
IDxzY3JpcHQgc3JjPSJUeXBlZFZhbHVlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJVaW50
TGl0ZXJhbC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iVWludExpdGVyYWxUeXBlLmpzIj48
L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347837</attachid>
            <date>2018-08-22 13:32:58 -0700</date>
            <delta_ts>2018-08-22 14:21:51 -0700</delta_ts>
            <desc>Needs tests</desc>
            <filename>bug-188773-20180822133258.patch</filename>
            <type>text/plain</type>
            <size>74510</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1MTgzCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYjIyOTRjOGE5MzFkYTYyNDAwZGNmZjkyODJiMTA1YWNk
NjI3YTc1MC4uNzdiNjg5YTRiZTk2NzJjMzU2YTk3Y2Q0N2U3OWI1YTRmYTRmZDM0NSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMx
IEBACisyMDE4LTA4LTIyICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CisKKyAgICAgICAgW1dITFNMXSBBbGxvdyBuYXRpdmUgdHlwZXMgdG8gaGF2ZSB0eXBlIGFyZ3Vt
ZW50cyAobGlrZSAidmVjdG9yPGZsb2F0LCA0PiIpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODg3NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0ludHJpbnNp
Y3MuanM6CisgICAgICAgIChJbnRyaW5zaWNzLmNhc3QpOgorICAgICAgICAoSW50cmluc2ljcy5i
aXR3aXNlQ2FzdCk6CisgICAgICAgIChJbnRyaW5zaWNzLmNhc3RUb0hhbGYpOgorICAgICAgICAo
SW50cmluc2ljcy4pOgorICAgICAgICAoSW50cmluc2ljcyk6CisgICAgICAgICogV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvTmF0aXZlVHlwZS5qczoKKyAgICAgICAgKE5hdGl2ZVR5cGUpOgorICAg
ICAgICAoTmF0aXZlVHlwZS5wcm90b3R5cGUuZ2V0IHR5cGVBcmd1bWVudHMpOgorICAgICAgICAo
TmF0aXZlVHlwZS5wcm90b3R5cGUudG9TdHJpbmcpOgorICAgICAgICAoTmF0aXZlVHlwZS5jcmVh
dGUpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1BhcnNlLmpzOgorICAgICAg
ICAoaXNDYWxsRXhwcmVzc2lvbik6CisgICAgICAgIChwYXJzZU5hdGl2ZSk6CisgICAgICAgICog
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhbmRhcmRMaWJyYXJ5LmpzOgorICAgICAgICAoYm9v
bC5vcGVyYXRvcik6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVmVjdG9yVHlw
ZS5qczoKKyAgICAgICAgKFZlY3RvclR5cGUpOgorICAgICAgICAoVmVjdG9yVHlwZS5wcm90b3R5
cGUuZ2V0IGVsZW1lbnRUeXBlKToKKyAgICAgICAgKFZlY3RvclR5cGUucHJvdG90eXBlLmdldCBu
dW1FbGVtZW50c1ZhbHVlKToKKwogMjAxOC0wOC0yMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJvbGwgb3V0IHIyMzUxMzkgYW5kIHIyMzUx
NDYKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0FsbC5qcyBiL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0FsbC5qcwppbmRleCA4MTUyNTI3M2FlNjVhMTQ4
NjU5NjRhMTNkYTQ1Y2U5NGVmMTA2ODRhLi5mOWExZDk5ZWFkYzg3YjRhNDA4Y2ZmOWU0OTkwYTcz
N2VjYjhiYTFlIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9BbGwu
anMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQWxsLmpzCkBAIC02MCw2ICs2
MCw3IEBAIGxvYWQoIkNoZWNrTG9vcHMuanMiKTsKIGxvYWQoIkNoZWNrUmVjdXJzaW9uLmpzIik7
CiBsb2FkKCJDaGVja1JlY3Vyc2l2ZVR5cGVzLmpzIik7CiBsb2FkKCJDaGVja1JldHVybnMuanMi
KTsKK2xvYWQoIkNoZWNrVHlwZXNXaXRoQXJndW1lbnRzLmpzIik7CiBsb2FkKCJDaGVja1VucmVh
Y2hhYmxlQ29kZS5qcyIpOwogbG9hZCgiQ2hlY2tXcmFwcGVkLmpzIik7CiBsb2FkKCJDaGVja2Vy
LmpzIik7CkBAIC0xMzMsNyArMTM0LDYgQEAgbG9hZCgiUHRyVHlwZS5qcyIpOwogbG9hZCgiUmVh
ZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5qcyIpOwogbG9hZCgiUmVjdXJzaW9uQ2hlY2tlci5qcyIp
OwogbG9hZCgiUmVjdXJzaXZlVHlwZUNoZWNrZXIuanMiKTsKLWxvYWQoIlJlbW92ZVR5cGVBcmd1
bWVudHMuanMiKTsKIGxvYWQoIlJlc29sdmVOYW1lcy5qcyIpOwogbG9hZCgiUmVzb2x2ZU92ZXJs
b2FkSW1wbC5qcyIpOwogbG9hZCgiUmVzb2x2ZVByb3BlcnRpZXMuanMiKTsKQEAgLTE1Nyw2ICsx
NTcsNyBAQCBsb2FkKCJUcmFwU3RhdGVtZW50LmpzIik7CiBsb2FkKCJUeXBlRGVmLmpzIik7CiBs
b2FkKCJUeXBlRGVmUmVzb2x2ZXIuanMiKTsKIGxvYWQoIlR5cGVSZWYuanMiKTsKK2xvYWQoIlR5
cGVPdmVybG9hZFJlc29sdXRpb25GYWlsdXJlLmpzIik7CiBsb2FkKCJUeXBlZFZhbHVlLmpzIik7
CiBsb2FkKCJVaW50TGl0ZXJhbC5qcyIpOwogbG9hZCgiVWludExpdGVyYWxUeXBlLmpzIik7CkBA
IC0xNzAsNCArMTcxLDQgQEAgbG9hZCgiV1N5bnRheEVycm9yLmpzIik7CiBsb2FkKCJXVHJhcEVy
cm9yLmpzIik7CiBsb2FkKCJXVHlwZUVycm9yLmpzIik7CiBsb2FkKCJXaGlsZUxvb3AuanMiKTsK
LWxvYWQoIldyYXBDaGVja2VyLmpzIik7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorbG9h
ZCgiV3JhcENoZWNrZXIuanMiKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL0NhbGxFeHByZXNzaW9uLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
Q2FsbEV4cHJlc3Npb24uanMKaW5kZXggYjI1Mzk4ZjBiMWI2ZWFkZTFiNzlhYzkwZTZhNzYyNTI1
ZjgxOWJkNy4uM2IxNTQ1NTk5MmU2NGUyNjc3YmEwYjAzYWI2NTY4ZWY0M2Q1ZDg2NSAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2FsbEV4cHJlc3Npb24uanMKKysr
IGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2FsbEV4cHJlc3Npb24uanMKQEAgLTY0
LDcgKzY0LDYgQEAgY2xhc3MgQ2FsbEV4cHJlc3Npb24gZXh0ZW5kcyBFeHByZXNzaW9uIHsKICAg
ICAgICAgICAgICAgICBvdmVybG9hZC5mdW5jID0gZnVuYzsKICAgICAgICAgfQogCi0KICAgICAg
ICAgaWYgKCFvdmVybG9hZC5mdW5jKSB7CiAgICAgICAgICAgICBmYWlsdXJlcy5wdXNoKC4uLm92
ZXJsb2FkLmZhaWx1cmVzKTsKICAgICAgICAgICAgIGxldCBtZXNzYWdlID0gIkRpZCBub3QgZmlu
ZCBmdW5jdGlvbiBuYW1lZCAiICsgdGhpcy5uYW1lICsgIiBmb3IgY2FsbCB3aXRoICI7CmRpZmYg
LS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DaGVja1R5cGVzV2l0aEFyZ3Vt
ZW50cy5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NoZWNrVHlwZXNXaXRoQXJn
dW1lbnRzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJiNmIyYmQ0OThlNzdiMTQ5ZGY0YzY4ZjRlZjNhYzFmZjFj
ZGFhYjIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9D
aGVja1R5cGVzV2l0aEFyZ3VtZW50cy5qcwpAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisidXNlIHN0cmljdCI7CisKK2Z1bmN0aW9u
IGNoZWNrVHlwZXNXaXRoQXJndW1lbnRzKHByb2dyYW0pCit7CisgICAgY2xhc3MgVHlwZVdpdGhB
cmd1bWVudHNDaGVja2VyIGV4dGVuZHMgVmlzaXRvciB7CisgICAgICAgIHZpc2l0VHlwZVJlZihu
b2RlKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAobm9kZS5uYW1lID09ICJ2ZWN0b3IiICYm
IG5vZGUudHlwZUFyZ3VtZW50cy5sZW5ndGggPT0gMCkKKyAgICAgICAgICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoIkJ1aWx0aW4gdHlwZSAke25vZGUubmFtZX0gc2hvdWxkIGFsd2F5cyBoYXZlIHR5
cGUgYXJndW1lbnRzLiIpOworICAgICAgICB9CisgICAgfQorICAgIHByb2dyYW0udmlzaXQobmV3
IFR5cGVXaXRoQXJndW1lbnRzQ2hlY2tlcigpKTsKK30KKwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2hlY2tlci5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL0NoZWNrZXIuanMKaW5kZXggMWExNGM4NjZhY2VkNDExMmIxODBmNjkxNTZjMDZkMmI2
NjRkODdlMi4uZTIxYzUyYWFhMGNmMGYzNWUwNjlkZGY4ODhjZTA2NDQ0Mjc3OTQ5OCAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2hlY2tlci5qcworKysgYi9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DaGVja2VyLmpzCkBAIC00MSw4ICs0MSwxMyBAQCBj
bGFzcyBDaGVja2VyIGV4dGVuZHMgVmlzaXRvciB7CiAgICAgICAgICAgICBzdGF0ZW1lbnQudmlz
aXQodGhpcyk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGZvciAobGV0IHR5cGUgb2Yg
bm9kZS50eXBlcy52YWx1ZXMoKSkKLSAgICAgICAgICAgIGRvU3RhdGVtZW50KHR5cGUpOworICAg
ICAgICBmb3IgKGxldCB0eXBlIG9mIG5vZGUudHlwZXMudmFsdWVzKCkpIHsKKyAgICAgICAgICAg
IGlmICh0eXBlIGluc3RhbmNlb2YgQXJyYXkpIHsKKyAgICAgICAgICAgICAgICBmb3IgKGxldCBj
b25zdGl0dWVudFR5cGUgb2YgdHlwZSkKKyAgICAgICAgICAgICAgICAgICAgZG9TdGF0ZW1lbnQo
Y29uc3RpdHVlbnRUeXBlKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIGRv
U3RhdGVtZW50KHR5cGUpOworICAgICAgICB9CiAgICAgICAgIGZvciAobGV0IGZ1bmNzIG9mIG5v
ZGUuZnVuY3Rpb25zLnZhbHVlcygpKSB7CiAgICAgICAgICAgICBmb3IgKGxldCBmdW5jIG9mIGZ1
bmNzKSB7CiAgICAgICAgICAgICAgICAgdGhpcy52aXNpdEZ1bmMoZnVuYyk7CkBAIC0yNDUsOCAr
MjUwLDE2IEBAIGNsYXNzIENoZWNrZXIgZXh0ZW5kcyBWaXNpdG9yIHsKICAgICAKICAgICB2aXNp
dFR5cGVSZWYobm9kZSkKICAgICB7Ci0gICAgICAgIGlmICghbm9kZS50eXBlKQorICAgICAgICBp
ZiAoIW5vZGUudHlwZSAmJiAhbm9kZS5wb3NzaWJsZU92ZXJsb2FkcykKICAgICAgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiVHlwZSByZWZlcmVuY2Ugd2l0aG91dCBhIHR5cGUgaW4gY2hlY2tlcjog
IiArIG5vZGUgKyAiIGF0ICIgKyBub2RlLm9yaWdpbik7CisgICAgICAgIGlmICghbm9kZS50eXBl
KQorICAgICAgICAgICAgbm9kZS5yZXNvbHZlKG5vZGUucG9zc2libGVPdmVybG9hZHMsIHRoaXMu
X3Byb2dyYW0pOworICAgICAgICBpZiAoIW5vZGUudHlwZSkKKyAgICAgICAgICAgIHRocm93IG5l
dyBFcnJvcigiVHlwZSByZWZlcmVuY2Ugd2l0aG91dCBhIHR5cGUgYWZ0ZXIgcG9zc2libHkgcmVz
b2x2aW5nIGluIGNoZWNrZXI6ICIgKyBub2RlICsgIiBhdCAiICsgbm9kZS5vcmlnaW4pOworICAg
ICAgICAvLyBBbGwgdGhlIHN0cnVjdHMgd2lsbCBiZSB2aXNpdGVkIGJ5IHZpc2l0UHJvZ3JhbSgp
IGl0ZXJhdGluZyB0aHJvdWdoIGVhY2ggdG9wLWxldmVsIHR5cGUuCisgICAgICAgIC8vIFdlIGRv
bid0IHdhbnQgdG8gcmVjdXJzZSBoZXJlIGJlY2F1c2UgdGhlIGNvbnRlbnRzIG9mIHN0cnVjdHMg
Y2FuIHJlZmVyIHRvIHRoZW1zZWx2ZXMgKGUuZy4gYSBsaW5rZWQgbGlzdCksCisgICAgICAgIC8v
IGFuZCB0aGlzIHdvdWxkIGNhbiBhbiBpbmZpbml0ZSBsb29wLgorICAgICAgICAvLyBUeXBlZGVm
cyBjYW4ndCByZWZlciB0byB0aGVtc2VsdmVzIGJlY2F1c2Ugd2UgY2hlY2sgdGhhdCBpbiBUeXBl
RGVmUmVzb2x2ZXIuCiAgICAgICAgIGlmICghKG5vZGUudHlwZSBpbnN0YW5jZW9mIFN0cnVjdFR5
cGUpKQogICAgICAgICAgICAgbm9kZS50eXBlLnZpc2l0KHRoaXMpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0luZmVyVHlwZXNGb3JDYWxsLmpzIGIv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvSW5mZXJUeXBlc0ZvckNhbGwuanMKaW5kZXgg
NWYzMmVkMWM0OTBhN2RmODk0MWU5MTljMTMwY2Y2NWVhYThiNmE0ZC4uYmNmZWI5ODZjYWZmNDlm
MDI4N2E4MzY3OGJmMTE1NjI4NDdmMDM4OSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvSW5mZXJUeXBlc0ZvckNhbGwuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvSW5mZXJUeXBlc0ZvckNhbGwuanMKQEAgLTM2LDEyICszNiw4IEBAIGZ1bmN0
aW9uIGluZmVyVHlwZXNGb3JDYWxsKGZ1bmMsIGFyZ3VtZW50VHlwZXMsIHJldHVyblR5cGUpCiAg
ICAgICAgIGlmICghYXJndW1lbnRUeXBlc1tpXS51bmlmeSh1bmlmaWNhdGlvbkNvbnRleHQsIGZ1
bmMucGFyYW1ldGVyc1tpXS50eXBlKSkKICAgICAgICAgICAgIHJldHVybiB7ZmFpbHVyZTogbmV3
IE92ZXJsb2FkUmVzb2x1dGlvbkZhaWx1cmUoZnVuYywgIkFyZ3VtZW50ICMiICsgKGkgKyAxKSAr
ICIgIiArIChmdW5jLnBhcmFtZXRlcnNbaV0ubmFtZSA/ICJmb3IgcGFyYW1ldGVyICIgKyBmdW5j
LnBhcmFtZXRlcnNbaV0ubmFtZSArICIgIiA6ICIiKSArICJkb2VzIG5vdCBtYXRjaCAocGFzc2Vk
ICIgKyBhcmd1bWVudFR5cGVzW2ldICsgIiwgcmVxdWlyZSAiICsgZnVuYy5wYXJhbWV0ZXJzW2ld
LnR5cGUgKyAiKSIpfTsKICAgICB9Ci0gICAgaWYgKHJldHVyblR5cGUgJiYgIXJldHVyblR5cGUu
dW5pZnkodW5pZmljYXRpb25Db250ZXh0LCBmdW5jLnJldHVyblR5cGUpKSB7Ci0gICAgICAgIGlm
IChmdW5jLnJldHVyblR5cGUudG9TdHJpbmcoKSA9PSAidmVjdG9yIikgewotICAgICAgICAgICAg
cmV0dXJuVHlwZS51bmlmeSh1bmlmaWNhdGlvbkNvbnRleHQsIGZ1bmMucmV0dXJuVHlwZSkKLSAg
ICAgICAgfQorICAgIGlmIChyZXR1cm5UeXBlICYmICFyZXR1cm5UeXBlLnVuaWZ5KHVuaWZpY2F0
aW9uQ29udGV4dCwgZnVuYy5yZXR1cm5UeXBlKSkKICAgICAgICAgcmV0dXJuIHtmYWlsdXJlOiBu
ZXcgT3ZlcmxvYWRSZXNvbHV0aW9uRmFpbHVyZShmdW5jLCAiUmV0dXJuIHR5cGUgIiArIGZ1bmMu
cmV0dXJuVHlwZSArICIgZG9lcyBub3QgbWF0Y2ggIiArIHJldHVyblR5cGUpfTsKLSAgICB9CiAg
ICAgbGV0IHZlcmlmaWNhdGlvblJlc3VsdCA9IHVuaWZpY2F0aW9uQ29udGV4dC52ZXJpZnkoKTsK
ICAgICBpZiAoIXZlcmlmaWNhdGlvblJlc3VsdC5yZXN1bHQpCiAgICAgICAgIHJldHVybiB7ZmFp
bHVyZTogbmV3IE92ZXJsb2FkUmVzb2x1dGlvbkZhaWx1cmUoZnVuYywgdmVyaWZpY2F0aW9uUmVz
dWx0LnJlYXNvbil9OwpAQCAtNDksMyArNDUsMjEgQEAgZnVuY3Rpb24gaW5mZXJUeXBlc0ZvckNh
bGwoZnVuYywgYXJndW1lbnRUeXBlcywgcmV0dXJuVHlwZSkKICAgICByZXR1cm4ge2Z1bmMsIHVu
aWZpY2F0aW9uQ29udGV4dH07CiB9CiAKK2Z1bmN0aW9uIGluZmVyVHlwZXNGb3JUeXBlQXJndW1l
bnRzKHR5cGUsIHR5cGVBcmd1bWVudHMpCit7CisgICAgaWYgKHR5cGVBcmd1bWVudHMubGVuZ3Ro
ICE9IHR5cGUudHlwZUFyZ3VtZW50cy5sZW5ndGgpCisgICAgICAgIHJldHVybiB7ZmFpbHVyZTog
bmV3IFR5cGVPdmVybG9hZFJlc29sdXRpb25GYWlsdXJlKHR5cGUsICJXcm9uZyBudW1iZXIgb2Yg
YXJndW1lbnRzIChwYXNzZWQgIiArIHR5cGVBcmd1bWVudHMubGVuZ3RoICsgIiwgcmVxdWlyZSAi
ICsgdHlwZS50eXBlQXJndW1lbnRzLmxlbmd0aCArICIpIil9OworICAgIGxldCB1bmlmaWNhdGlv
bkNvbnRleHQgPSBuZXcgVW5pZmljYXRpb25Db250ZXh0KCk7CisKKyAgICBmb3IgKGxldCBpID0g
MDsgaSA8IHR5cGVBcmd1bWVudHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgaWYgKCF0eXBlQXJn
dW1lbnRzW2ldKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJOdWxsIHR5cGUgYXJndW1l
bnQgYXQgaSA9ICIgKyBpKTsKKyAgICAgICAgaWYgKCF0eXBlQXJndW1lbnRzW2ldLnVuaWZ5KHVu
aWZpY2F0aW9uQ29udGV4dCwgdHlwZS50eXBlQXJndW1lbnRzW2ldKSkKKyAgICAgICAgICAgIHJl
dHVybiB7ZmFpbHVyZTogbmV3IFR5cGVPdmVybG9hZFJlc29sdXRpb25GYWlsdXJlKHR5cGUsICJB
cmd1bWVudCAjIiArIChpICsgMSkgKyAiICIgKyAodHlwZS50eXBlQXJndW1lbnRzW2ldLm5hbWUg
PyAiZm9yIHBhcmFtZXRlciAiICsgdHlwZS50eXBlQXJndW1lbnRzW2ldLm5hbWUgKyAiICIgOiAi
IikgKyAiZG9lcyBub3QgbWF0Y2ggKHBhc3NlZCAiICsgdHlwZUFyZ3VtZW50c1tpXSArICIsIHJl
cXVpcmUgIiArIHR5cGUudHlwZUFyZ3VtZW50c1tpXS50eXBlICsgIikiKX07CisgICAgfQorICAg
IGxldCB2ZXJpZmljYXRpb25SZXN1bHQgPSB1bmlmaWNhdGlvbkNvbnRleHQudmVyaWZ5KCk7Cisg
ICAgaWYgKCF2ZXJpZmljYXRpb25SZXN1bHQucmVzdWx0KQorICAgICAgICByZXR1cm4ge2ZhaWx1
cmU6IG5ldyBUeXBlT3ZlcmxvYWRSZXNvbHV0aW9uRmFpbHVyZSh0eXBlLCB2ZXJpZmljYXRpb25S
ZXN1bHQucmVhc29uKX07CisKKyAgICByZXR1cm4ge3R5cGUsIHVuaWZpY2F0aW9uQ29udGV4dH07
Cit9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9JbnRyaW5zaWNz
LmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvSW50cmluc2ljcy5qcwppbmRleCA1
MGQ0MGMwYzBlNDdlMTEyYmM3NGNjZmNjYjcwNDk0MjcxMTZiMGZiLi5lOWMzZDFiMzQxNzZhNGJm
ZDc5YjRmNDQ5NGIzN2JlMGU1ZTliMzgwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9JbnRyaW5zaWNzLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL0ludHJpbnNpY3MuanMKQEAgLTMzLDE1ICszMyw3IEBAIGNsYXNzIEludHJpbnNpY3Mgewog
ICAgICAgICAvLyB0byBjYXRjaCB0aGUgaW50cmluc2ljcyBtdXN0IGJlIGJhc2VkIG9uIHRoZSB0
eXBlIG5hbWVzIHRoYXQgU3RhbmRhcmRMaWJyYXJ5LmpzIHVzZXMuCiAgICAgICAgIC8vIEZvciBl
eGFtcGxlLCBpZiBhIG5hdGl2ZSBmdW5jdGlvbiBpcyBkZWNsYXJlZCB1c2luZyAiaW50IiByYXRo
ZXIgdGhhbiAiaW50IiwgdGhlbiB3ZSBtdXN0CiAgICAgICAgIC8vIHVzZSAiaW50IiBoZXJlLCBz
aW5jZSB3ZSBkb24ndCB5ZXQga25vdyB0aGF0IHRoZXkgYXJlIHRoZSBzYW1lIHR5cGUuCi0gICAg
ICAgIAotICAgICAgICB0aGlzLl9tYXAuc2V0KAotICAgICAgICAgICAgIm5hdGl2ZSB0eXBlZGVm
IHZvaWQiLAotICAgICAgICAgICAgdHlwZSA9PiB7Ci0gICAgICAgICAgICAgICAgdGhpcy52b2lk
ID0gdHlwZTsKLSAgICAgICAgICAgICAgICB0eXBlLnNpemUgPSAwOwotICAgICAgICAgICAgICAg
IHR5cGUucG9wdWxhdGVEZWZhdWx0VmFsdWUgPSAoKSA9PiB7IH07Ci0gICAgICAgICAgICB9KTsK
LSAgICAgICAgCisKICAgICAgICAgZnVuY3Rpb24gaXNCaXR3aXNlRXF1aXZhbGVudChsZWZ0LCBy
aWdodCkKICAgICAgICAgewogICAgICAgICAgICAgbGV0IGRvdWJsZUFycmF5ID0gbmV3IEZsb2F0
NjRBcnJheSgxKTsKQEAgLTU2LDU4ICs0OCw4MyBAQCBjbGFzcyBJbnRyaW5zaWNzIHsKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKKyAgICAgICAgZnVuY3Rpb24gY2FzdCh0
eXBlZEFycmF5Q29uc3RydWN0b3IsIG51bWJlcikKKyAgICAgICAgeworICAgICAgICAgICAgdmFy
IGFycmF5ID0gbmV3IHR5cGVkQXJyYXlDb25zdHJ1Y3RvcigxKTsKKyAgICAgICAgICAgIGFycmF5
WzBdID0gbnVtYmVyOworICAgICAgICAgICAgcmV0dXJuIGFycmF5WzBdOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gYml0d2lzZUNhc3QodHlwZWRBcnJheUNvbnN0cnVjdG9yMSwgdHlw
ZWRBcnJheUNvbnN0cnVjdG9yMiwgdmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGxldCB0
eXBlZEFycmF5MSA9IG5ldyB0eXBlZEFycmF5Q29uc3RydWN0b3IxKDEpOworICAgICAgICAgICAg
bGV0IHR5cGVkQXJyYXkyID0gbmV3IHR5cGVkQXJyYXlDb25zdHJ1Y3RvcjIodHlwZWRBcnJheTEu
YnVmZmVyKTsKKyAgICAgICAgICAgIHR5cGVkQXJyYXkxWzBdID0gdmFsdWU7CisgICAgICAgICAg
ICByZXR1cm4gdHlwZWRBcnJheTJbMF07CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBj
YXN0VG9IYWxmKG51bWJlcikKKyAgICAgICAgeworICAgICAgICAgICAgLy8gRklYTUU6IE1ha2Ug
dGhpcyBtYXRoIG9iZXkgSUVFRSA3NTQuCisgICAgICAgICAgICBpZiAoTnVtYmVyLmlzTmFOKG51
bWJlcikpCisgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyCisgICAgICAgICAgICBpZiAobnVt
YmVyID4gNjU1MDQpCisgICAgICAgICAgICAgICAgcmV0dXJuIE51bWJlci5QT1NJVElWRV9JTkZJ
TklUWTsKKyAgICAgICAgICAgIGlmIChudW1iZXIgPCAtNjU1MDQpCisgICAgICAgICAgICAgICAg
cmV0dXJuIE51bWJlci5ORUdBVElWRV9JTkZJTklUWTsKKyAgICAgICAgICAgIGlmIChudW1iZXIg
PiAwICYmIG51bWJlciA8IE1hdGgucG93KDIsIC0yNCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgICAgICBpZiAobnVtYmVyIDwgMCAmJiBudW1iZXIgPiAtTWF0aC5wb3coMiwg
LTI0KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTA7CisgICAgICAgICAgICBsZXQgZG91Ymxl
QXJyYXkgPSBuZXcgRmxvYXQ2NEFycmF5KDEpOworICAgICAgICAgICAgbGV0IHVpbnRBcnJheSA9
IG5ldyBVaW50OEFycmF5KGRvdWJsZUFycmF5LmJ1ZmZlcik7CisgICAgICAgICAgICBkb3VibGVB
cnJheVswXSA9IG51bWJlcjsKKyAgICAgICAgICAgIGxldCBzaWduID0gdWludEFycmF5WzddICYg
MHg4MDsKKyAgICAgICAgICAgIGxldCBleHBvbmVudCA9ICgodWludEFycmF5WzddICYgMHg3Zikg
PDwgNCkgfCAoKHVpbnRBcnJheVs2XSAmIDB4ZjApID4+PiA0KTsKKyAgICAgICAgICAgIGxldCBz
aWduaWZpY2FuZCA9ICgodWludEFycmF5WzZdICYgMHgwZikgPDwgNikgfCAoKHVpbnRBcnJheVs1
XSAmIDB4ZmMpID4+PiAyKTsKKworICAgICAgICAgICAgaWYgKChleHBvbmVudCAtIDEwMjMpIDwg
LTE0KSB7CisgICAgICAgICAgICAgICAgZXhwb25lbnQgPSAwOworICAgICAgICAgICAgICAgIHNp
Z25pZmljYW5kID0gKE1hdGguYWJzKG51bWJlcikgKiBNYXRoLnBvdygyLCAyNCkpID4+PiAwOwor
ICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IE1hdGgucG93KDIsIC0xNCkgKiBzaWduaWZpY2Fu
ZCAvIDEwMjQ7CisgICAgICAgICAgICAgICAgaWYgKHNpZ24gIT0gMCkKKyAgICAgICAgICAgICAg
ICAgICAgdmFsdWUgKj0gLTE7CisgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBkb3VibGVBcnJheVswXSA9IDA7CisKKyAgICAgICAgICAg
IHVpbnRBcnJheVs3XSB8PSBzaWduOworICAgICAgICAgICAgdWludEFycmF5WzddIHw9IChleHBv
bmVudCA+Pj4gNCk7CisgICAgICAgICAgICB1aW50QXJyYXlbNl0gfD0gKChleHBvbmVudCA8PCA0
KSAmIDB4ZjApOworICAgICAgICAgICAgdWludEFycmF5WzZdIHw9IChzaWduaWZpY2FuZCA+Pj4g
Nik7CisgICAgICAgICAgICB1aW50QXJyYXlbNV0gfD0gKChzaWduaWZpY2FuZCA8PCAyKSAmIDB4
ZmMpOworCisgICAgICAgICAgICByZXR1cm4gZG91YmxlQXJyYXlbMF07CisgICAgICAgIH0KKwog
ICAgICAgICB0aGlzLl9tYXAuc2V0KAotICAgICAgICAgICAgIm5hdGl2ZSB0eXBlZGVmIGludCIs
CisgICAgICAgICAgICAibmF0aXZlIHR5cGVkZWYgdm9pZCIsCiAgICAgICAgICAgICB0eXBlID0+
IHsKLSAgICAgICAgICAgICAgICB0aGlzLmludCA9IHR5cGU7Ci0gICAgICAgICAgICAgICAgdHlw
ZS5pc1ByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgdHlwZS5pc0ludCA9IHRydWU7
Ci0gICAgICAgICAgICAgICAgdHlwZS5pc051bWJlciA9IHRydWU7Ci0gICAgICAgICAgICAgICAg
dHlwZS5pc1NpZ25lZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgdHlwZS5jYW5SZXByZXNlbnQg
PSB2YWx1ZSA9PiBpc0JpdHdpc2VFcXVpdmFsZW50KHZhbHVlIHwgMCwgdmFsdWUpOwotICAgICAg
ICAgICAgICAgIHR5cGUuc2l6ZSA9IDE7Ci0gICAgICAgICAgICAgICAgdHlwZS5kZWZhdWx0VmFs
dWUgPSAwOwotICAgICAgICAgICAgICAgIHR5cGUuY3JlYXRlTGl0ZXJhbCA9IChvcmlnaW4sIHZh
bHVlKSA9PiBJbnRMaXRlcmFsLndpdGhUeXBlKG9yaWdpbiwgdmFsdWUgfCAwLCB0eXBlKTsKLSAg
ICAgICAgICAgICAgICB0eXBlLnN1Y2Nlc3NvclZhbHVlID0gdmFsdWUgPT4gKHZhbHVlICsgMSkg
fCAwOwotICAgICAgICAgICAgICAgIHR5cGUudmFsdWVzRXF1YWwgPSAoYSwgYikgPT4gYSA9PT0g
YjsKLSAgICAgICAgICAgICAgICB0eXBlLnBvcHVsYXRlRGVmYXVsdFZhbHVlID0gKGJ1ZmZlciwg
b2Zmc2V0KSA9PiBidWZmZXIuc2V0KG9mZnNldCwgMCk7Ci0gICAgICAgICAgICAgICAgdHlwZS5m
b3JtYXRWYWx1ZUZyb21JbnRMaXRlcmFsID0gdmFsdWUgPT4gdmFsdWUgfCAwOwotICAgICAgICAg
ICAgICAgIHR5cGUuZm9ybWF0VmFsdWVGcm9tVWludExpdGVyYWwgPSB2YWx1ZSA9PiB2YWx1ZSB8
IDA7Ci0gICAgICAgICAgICAgICAgdHlwZS5hbGxWYWx1ZXMgPSBmdW5jdGlvbiooKSB7IAotICAg
ICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSAweGZmZmZmZmZmOyArK2kpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGkgfCAwOwotICAgICAgICAgICAg
ICAgICAgICAgICAgeWllbGQge3ZhbHVlOiB2YWx1ZSwgbmFtZTogdmFsdWV9OwotICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICB0aGlzLnZv
aWQgPSB0eXBlOworICAgICAgICAgICAgICAgIHR5cGUuc2l6ZSA9IDA7CisgICAgICAgICAgICAg
ICAgdHlwZS5wb3B1bGF0ZURlZmF1bHRWYWx1ZSA9ICgpID0+IHsgfTsKICAgICAgICAgICAgIH0p
OwogCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCi0gICAgICAgICAgICAibmF0aXZlIHR5cGVkZWYg
dWludCIsCisgICAgICAgICAgICAibmF0aXZlIHR5cGVkZWYgYm9vbCIsCiAgICAgICAgICAgICB0
eXBlID0+IHsKLSAgICAgICAgICAgICAgICB0aGlzLnVpbnQgPSB0eXBlOworICAgICAgICAgICAg
ICAgIHRoaXMuYm9vbCA9IHR5cGU7CiAgICAgICAgICAgICAgICAgdHlwZS5pc1ByaW1pdGl2ZSA9
IHRydWU7Ci0gICAgICAgICAgICAgICAgdHlwZS5pc0ludCA9IHRydWU7Ci0gICAgICAgICAgICAg
ICAgdHlwZS5pc051bWJlciA9IHRydWU7Ci0gICAgICAgICAgICAgICAgdHlwZS5pc1NpZ25lZCA9
IGZhbHNlOwotICAgICAgICAgICAgICAgIHR5cGUuY2FuUmVwcmVzZW50ID0gdmFsdWUgPT4gaXNC
aXR3aXNlRXF1aXZhbGVudCh2YWx1ZSA+Pj4gMCwgdmFsdWUpOwogICAgICAgICAgICAgICAgIHR5
cGUuc2l6ZSA9IDE7Ci0gICAgICAgICAgICAgICAgdHlwZS5kZWZhdWx0VmFsdWUgPSAwOwotICAg
ICAgICAgICAgICAgIHR5cGUuY3JlYXRlTGl0ZXJhbCA9IChvcmlnaW4sIHZhbHVlKSA9PiBJbnRM
aXRlcmFsLndpdGhUeXBlKG9yaWdpbiwgdmFsdWUgPj4+IDAsIHR5cGUpOwotICAgICAgICAgICAg
ICAgIHR5cGUuc3VjY2Vzc29yVmFsdWUgPSB2YWx1ZSA9PiAodmFsdWUgKyAxKSA+Pj4gMDsKLSAg
ICAgICAgICAgICAgICB0eXBlLnZhbHVlc0VxdWFsID0gKGEsIGIpID0+IGEgPT09IGI7Ci0gICAg
ICAgICAgICAgICAgdHlwZS5wb3B1bGF0ZURlZmF1bHRWYWx1ZSA9IChidWZmZXIsIG9mZnNldCkg
PT4gYnVmZmVyLnNldChvZmZzZXQsIDApOwotICAgICAgICAgICAgICAgIHR5cGUuZm9ybWF0VmFs
dWVGcm9tSW50TGl0ZXJhbCA9IHZhbHVlID0+IHZhbHVlID4+PiAwOwotICAgICAgICAgICAgICAg
IHR5cGUuZm9ybWF0VmFsdWVGcm9tVWludExpdGVyYWwgPSB2YWx1ZSA9PiB2YWx1ZSA+Pj4gMDsK
LSAgICAgICAgICAgICAgICB0eXBlLmFsbFZhbHVlcyA9IGZ1bmN0aW9uKigpIHsgCi0gICAgICAg
ICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IDB4ZmZmZmZmZmY7ICsraSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHlpZWxkIHt2YWx1ZTogaSwgbmFtZTogaX07Ci0gICAgICAgICAg
ICAgICAgfTsKKyAgICAgICAgICAgICAgICB0eXBlLnBvcHVsYXRlRGVmYXVsdFZhbHVlID0gKGJ1
ZmZlciwgb2Zmc2V0KSA9PiBidWZmZXIuc2V0KG9mZnNldCwgZmFsc2UpOwogICAgICAgICAgICAg
fSk7CiAKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUgdHlwZWRl
ZiB1Y2hhciIsCiAgICAgICAgICAgICB0eXBlID0+IHsKICAgICAgICAgICAgICAgICB0aGlzLnVj
aGFyID0gdHlwZTsKKyAgICAgICAgICAgICAgICB0eXBlLmlzUHJpbWl0aXZlID0gdHJ1ZTsKICAg
ICAgICAgICAgICAgICB0eXBlLmlzSW50ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICB0eXBlLmlz
TnVtYmVyID0gdHJ1ZTsKICAgICAgICAgICAgICAgICB0eXBlLmlzU2lnbmVkID0gZmFsc2U7CkBA
IC0xMjYsMTQ5ICsxNDMsMjkyIEBAIGNsYXNzIEludHJpbnNpY3MgewogICAgICAgICAgICAgICAg
IH07CiAgICAgICAgICAgICB9KTsKIAorCisgICAgICAgICAgICB0aGlzLl9tYXAuc2V0KAorICAg
ICAgICAgICAgICJuYXRpdmUgdHlwZWRlZiB1c2hvcnQiLAorICAgICAgICAgICAgIHR5cGUgPT4g
eworICAgICAgICAgICAgICAgICB0aGlzLnVzaG9ydCA9IHR5cGU7CisgICAgICAgICAgICAgICAg
IHR5cGUuaXNQcmltaXRpdmUgPSB0cnVlOworICAgICAgICAgICAgICAgICB0eXBlLmlzSW50ID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5pc051bWJlciA9IHRydWU7CisgICAgICAgICAg
ICAgICAgIHR5cGUuaXNTaWduZWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5jYW5S
ZXByZXNlbnQgPSB2YWx1ZSA9PiBpc0JpdHdpc2VFcXVpdmFsZW50KHZhbHVlICYgMHhmZmZmLCB2
YWx1ZSk7CisgICAgICAgICAgICAgICAgIHR5cGUuc2l6ZSA9IDE7CisgICAgICAgICAgICAgICAg
IHR5cGUuZGVmYXVsdFZhbHVlID0gMDsKKyAgICAgICAgICAgICAgICAgdHlwZS5jcmVhdGVMaXRl
cmFsID0gKG9yaWdpbiwgdmFsdWUpID0+IEludExpdGVyYWwud2l0aFR5cGUob3JpZ2luLCB2YWx1
ZSAmIDB4ZmZmZiwgdHlwZSk7CisgICAgICAgICAgICAgICAgIHR5cGUuc3VjY2Vzc29yVmFsdWUg
PSB2YWx1ZSA9PiAodmFsdWUgKyAxKSAmIDB4ZmZmZjsKKyAgICAgICAgICAgICAgICAgdHlwZS52
YWx1ZXNFcXVhbCA9IChhLCBiKSA9PiBhID09PSBiOworICAgICAgICAgICAgICAgICB0eXBlLnBv
cHVsYXRlRGVmYXVsdFZhbHVlID0gKGJ1ZmZlciwgb2Zmc2V0KSA9PiBidWZmZXIuc2V0KG9mZnNl
dCwgMCk7CisgICAgICAgICAgICAgICAgIHR5cGUuZm9ybWF0VmFsdWVGcm9tSW50TGl0ZXJhbCA9
IHZhbHVlID0+IHZhbHVlICYgMHhmZmZmOworICAgICAgICAgICAgICAgICB0eXBlLmZvcm1hdFZh
bHVlRnJvbVVpbnRMaXRlcmFsID0gdmFsdWUgPT4gdmFsdWUgJiAweGZmZmY7CisgICAgICAgICAg
ICAgICAgIHR5cGUuYWxsVmFsdWVzID0gZnVuY3Rpb24qKCkgeworICAgICAgICAgICAgICAgICAg
ICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gMHhmZmZmOyArK2kpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgeWllbGQge3ZhbHVlOiBpLCBuYW1lOiBpfTsKKyAgICAgICAgICAgICAgICAgfTsKKyAg
ICAgICAgICAgICB9KTsKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAotICAgICAgICAgICAgIm5h
dGl2ZSB0eXBlZGVmIGZsb2F0IiwKLSAgICAgICAgICAgIHR5cGUgPT4gewotICAgICAgICAgICAg
ICAgIHRoaXMuZmxvYXQgPSB0eXBlOwotICAgICAgICAgICAgICAgIHR5cGUuaXNQcmltaXRpdmUg
PSB0cnVlOwotICAgICAgICAgICAgICAgIHR5cGUuc2l6ZSA9IDE7Ci0gICAgICAgICAgICAgICAg
dHlwZS5pc0Zsb2F0aW5nID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB0eXBlLmlzTnVtYmVyID0g
dHJ1ZTsKLSAgICAgICAgICAgICAgICB0eXBlLmNhblJlcHJlc2VudCA9IHZhbHVlID0+IGlzQml0
d2lzZUVxdWl2YWxlbnQoTWF0aC5mcm91bmQodmFsdWUpLCB2YWx1ZSk7Ci0gICAgICAgICAgICAg
ICAgdHlwZS5wb3B1bGF0ZURlZmF1bHRWYWx1ZSA9IChidWZmZXIsIG9mZnNldCkgPT4gYnVmZmVy
LnNldChvZmZzZXQsIDApOwotICAgICAgICAgICAgICAgIHR5cGUuZm9ybWF0VmFsdWVGcm9tSW50
TGl0ZXJhbCA9IHZhbHVlID0+IHZhbHVlOwotICAgICAgICAgICAgICAgIHR5cGUuZm9ybWF0VmFs
dWVGcm9tVWludExpdGVyYWwgPSB2YWx1ZSA9PiB2YWx1ZTsKLSAgICAgICAgICAgICAgICB0eXBl
LmZvcm1hdFZhbHVlRnJvbUZsb2F0TGl0ZXJhbCA9IHZhbHVlID0+IE1hdGguZnJvdW5kKHZhbHVl
KTsKLSAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICJuYXRpdmUgdHlwZWRlZiB1aW50IiwK
KyAgICAgICAgICAgICB0eXBlID0+IHsKKyAgICAgICAgICAgICAgICAgdGhpcy51aW50ID0gdHlw
ZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5pc1ByaW1pdGl2ZSA9IHRydWU7CisgICAgICAgICAg
ICAgICAgIHR5cGUuaXNJbnQgPSB0cnVlOworICAgICAgICAgICAgICAgICB0eXBlLmlzTnVtYmVy
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5pc1NpZ25lZCA9IGZhbHNlOworICAgICAg
ICAgICAgICAgICB0eXBlLmNhblJlcHJlc2VudCA9IHZhbHVlID0+IGlzQml0d2lzZUVxdWl2YWxl
bnQodmFsdWUgPj4+IDAsIHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgdHlwZS5zaXplID0gMTsK
KyAgICAgICAgICAgICAgICAgdHlwZS5kZWZhdWx0VmFsdWUgPSAwOworICAgICAgICAgICAgICAg
ICB0eXBlLmNyZWF0ZUxpdGVyYWwgPSAob3JpZ2luLCB2YWx1ZSkgPT4gSW50TGl0ZXJhbC53aXRo
VHlwZShvcmlnaW4sIHZhbHVlID4+PiAwLCB0eXBlKTsKKyAgICAgICAgICAgICAgICAgdHlwZS5z
dWNjZXNzb3JWYWx1ZSA9IHZhbHVlID0+ICh2YWx1ZSArIDEpID4+PiAwOworICAgICAgICAgICAg
ICAgICB0eXBlLnZhbHVlc0VxdWFsID0gKGEsIGIpID0+IGEgPT09IGI7CisgICAgICAgICAgICAg
ICAgIHR5cGUucG9wdWxhdGVEZWZhdWx0VmFsdWUgPSAoYnVmZmVyLCBvZmZzZXQpID0+IGJ1ZmZl
ci5zZXQob2Zmc2V0LCAwKTsKKyAgICAgICAgICAgICAgICAgdHlwZS5mb3JtYXRWYWx1ZUZyb21J
bnRMaXRlcmFsID0gdmFsdWUgPT4gdmFsdWUgPj4+IDA7CisgICAgICAgICAgICAgICAgIHR5cGUu
Zm9ybWF0VmFsdWVGcm9tVWludExpdGVyYWwgPSB2YWx1ZSA9PiB2YWx1ZSA+Pj4gMDsKKyAgICAg
ICAgICAgICAgICAgdHlwZS5hbGxWYWx1ZXMgPSBmdW5jdGlvbiooKSB7CisgICAgICAgICAgICAg
ICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSAweGZmZmZmZmZmOyArK2kpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgeWllbGQge3ZhbHVlOiBpLCBuYW1lOiBpfTsKKyAgICAgICAgICAgICAg
ICAgfTsKKyAgICAgICAgICAgICB9KTsKIAogICAgICAgICB0aGlzLl9tYXAuc2V0KAotICAgICAg
ICAgICAgIm5hdGl2ZSB0eXBlZGVmIGJvb2wiLAotICAgICAgICAgICAgdHlwZSA9PiB7Ci0gICAg
ICAgICAgICAgICAgdGhpcy5ib29sID0gdHlwZTsKLSAgICAgICAgICAgICAgICB0eXBlLmlzUHJp
bWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB0eXBlLnNpemUgPSAxOwotICAgICAgICAg
ICAgICAgIHR5cGUucG9wdWxhdGVEZWZhdWx0VmFsdWUgPSAoYnVmZmVyLCBvZmZzZXQpID0+IGJ1
ZmZlci5zZXQob2Zmc2V0LCBmYWxzZSk7Ci0gICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAi
bmF0aXZlIHR5cGVkZWYgY2hhciIsCisgICAgICAgICAgICAgdHlwZSA9PiB7CisgICAgICAgICAg
ICAgICAgIHRoaXMuY2hhciA9IHR5cGU7CisgICAgICAgICAgICAgICAgIHR5cGUuaXNQcmltaXRp
dmUgPSB0cnVlOworICAgICAgICAgICAgICAgICB0eXBlLmlzSW50ID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICAgdHlwZS5pc051bWJlciA9IHRydWU7CisgICAgICAgICAgICAgICAgIHR5cGUuaXNT
aWduZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICB0eXBlLmNhblJlcHJlc2VudCA9IHZhbHVl
ID0+IGlzQml0d2lzZUVxdWl2YWxlbnQoY2FzdChJbnQ4QXJyYXksIHZhbHVlKSwgdmFsdWUpOwor
ICAgICAgICAgICAgICAgICB0eXBlLnNpemUgPSAxOworICAgICAgICAgICAgICAgICB0eXBlLmRl
ZmF1bHRWYWx1ZSA9IDA7CisgICAgICAgICAgICAgICAgIHR5cGUuY3JlYXRlTGl0ZXJhbCA9IChv
cmlnaW4sIHZhbHVlKSA9PiBJbnRMaXRlcmFsLndpdGhUeXBlKG9yaWdpbiwgY2FzdChJbnQ4QXJy
YXksIHZhbHVlKSwgdHlwZSk7CisgICAgICAgICAgICAgICAgIHR5cGUuc3VjY2Vzc29yVmFsdWUg
PSB2YWx1ZSA9PiBjYXN0KEludDhBcnJheSwgdmFsdWUgKyAxKTsKKyAgICAgICAgICAgICAgICAg
dHlwZS52YWx1ZXNFcXVhbCA9IChhLCBiKSA9PiBhID09PSBiOworICAgICAgICAgICAgICAgICB0
eXBlLnBvcHVsYXRlRGVmYXVsdFZhbHVlID0gKGJ1ZmZlciwgb2Zmc2V0KSA9PiBidWZmZXIuc2V0
KG9mZnNldCwgMCk7CisgICAgICAgICAgICAgICAgIHR5cGUuZm9ybWF0VmFsdWVGcm9tSW50TGl0
ZXJhbCA9IHZhbHVlID0+IGNhc3QoSW50OEFycmF5LCB2YWx1ZSk7CisgICAgICAgICAgICAgICAg
IHR5cGUuZm9ybWF0VmFsdWVGcm9tVWludExpdGVyYWwgPSB2YWx1ZSA9PiBjYXN0KEludDhBcnJh
eSwgdmFsdWUpOworICAgICAgICAgICAgICAgICB0eXBlLmFsbFZhbHVlcyA9IGZ1bmN0aW9uKigp
IHsKKyAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IDB4ZmY7ICsraSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGNhc3QoSW50OEFycmF5LCBp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCB7dmFsdWU6IHZhbHVlLCBuYW1lOiB2
YWx1ZX07CisgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgIH07CisgICAg
ICAgICAgICAgfSk7CisKKyAgICAgICAgdGhpcy5fbWFwLnNldCgKKyAgICAgICAgICAgICAibmF0
aXZlIHR5cGVkZWYgc2hvcnQiLAorICAgICAgICAgICAgIHR5cGUgPT4geworICAgICAgICAgICAg
ICAgICB0aGlzLnNob3J0ID0gdHlwZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5pc1ByaW1pdGl2
ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgIHR5cGUuaXNJbnQgPSB0cnVlOworICAgICAgICAg
ICAgICAgICB0eXBlLmlzTnVtYmVyID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5pc1Np
Z25lZCA9IHRydWU7CisgICAgICAgICAgICAgICAgIHR5cGUuY2FuUmVwcmVzZW50ID0gdmFsdWUg
PT4gaXNCaXR3aXNlRXF1aXZhbGVudChjYXN0KEludDE2QXJyYXksIHZhbHVlKSwgdmFsdWUpOwor
ICAgICAgICAgICAgICAgICB0eXBlLnNpemUgPSAxOworICAgICAgICAgICAgICAgICB0eXBlLmRl
ZmF1bHRWYWx1ZSA9IDA7CisgICAgICAgICAgICAgICAgIHR5cGUuY3JlYXRlTGl0ZXJhbCA9IChv
cmlnaW4sIHZhbHVlKSA9PiBJbnRMaXRlcmFsLndpdGhUeXBlKG9yaWdpbiwgY2FzdChJbnQxNkFy
cmF5LCB2YWx1ZSksIHR5cGUpOworICAgICAgICAgICAgICAgICB0eXBlLnN1Y2Nlc3NvclZhbHVl
ID0gdmFsdWUgPT4gY2FzdChJbnQxNkFycmF5LCB2YWx1ZSArIDEpOworICAgICAgICAgICAgICAg
ICB0eXBlLnZhbHVlc0VxdWFsID0gKGEsIGIpID0+IGEgPT09IGI7CisgICAgICAgICAgICAgICAg
IHR5cGUucG9wdWxhdGVEZWZhdWx0VmFsdWUgPSAoYnVmZmVyLCBvZmZzZXQpID0+IGJ1ZmZlci5z
ZXQob2Zmc2V0LCAwKTsKKyAgICAgICAgICAgICAgICAgdHlwZS5mb3JtYXRWYWx1ZUZyb21JbnRM
aXRlcmFsID0gdmFsdWUgPT4gY2FzdChJbnQxNkFycmF5LCB2YWx1ZSk7CisgICAgICAgICAgICAg
ICAgIHR5cGUuZm9ybWF0VmFsdWVGcm9tVWludExpdGVyYWwgPSB2YWx1ZSA9PiBjYXN0KEludDE2
QXJyYXksIHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgdHlwZS5hbGxWYWx1ZXMgPSBmdW5jdGlv
biooKSB7CisgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSAweGZmZmY7
ICsraSkgeworICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGNhc3QoSW50MTZB
cnJheSwgaSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQge3ZhbHVlOiB2YWx1ZSwg
bmFtZTogdmFsdWV9OworICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICB9
OworICAgICAgICAgICAgIH0pOworCisgICAgICAgIHRoaXMuX21hcC5zZXQoCisgICAgICAgICAg
ICAgIm5hdGl2ZSB0eXBlZGVmIGludCIsCisgICAgICAgICAgICAgdHlwZSA9PiB7CisgICAgICAg
ICAgICAgICAgIHRoaXMuaW50ID0gdHlwZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5pc1ByaW1p
dGl2ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgIHR5cGUuaXNJbnQgPSB0cnVlOworICAgICAg
ICAgICAgICAgICB0eXBlLmlzTnVtYmVyID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5p
c1NpZ25lZCA9IHRydWU7CisgICAgICAgICAgICAgICAgIHR5cGUuY2FuUmVwcmVzZW50ID0gdmFs
dWUgPT4gaXNCaXR3aXNlRXF1aXZhbGVudCh2YWx1ZSB8IDAsIHZhbHVlKTsKKyAgICAgICAgICAg
ICAgICAgdHlwZS5zaXplID0gMTsKKyAgICAgICAgICAgICAgICAgdHlwZS5kZWZhdWx0VmFsdWUg
PSAwOworICAgICAgICAgICAgICAgICB0eXBlLmNyZWF0ZUxpdGVyYWwgPSAob3JpZ2luLCB2YWx1
ZSkgPT4gSW50TGl0ZXJhbC53aXRoVHlwZShvcmlnaW4sIHZhbHVlIHwgMCwgdHlwZSk7CisgICAg
ICAgICAgICAgICAgIHR5cGUuc3VjY2Vzc29yVmFsdWUgPSB2YWx1ZSA9PiAodmFsdWUgKyAxKSB8
IDA7CisgICAgICAgICAgICAgICAgIHR5cGUudmFsdWVzRXF1YWwgPSAoYSwgYikgPT4gYSA9PT0g
YjsKKyAgICAgICAgICAgICAgICAgdHlwZS5wb3B1bGF0ZURlZmF1bHRWYWx1ZSA9IChidWZmZXIs
IG9mZnNldCkgPT4gYnVmZmVyLnNldChvZmZzZXQsIDApOworICAgICAgICAgICAgICAgICB0eXBl
LmZvcm1hdFZhbHVlRnJvbUludExpdGVyYWwgPSB2YWx1ZSA9PiB2YWx1ZSB8IDA7CisgICAgICAg
ICAgICAgICAgIHR5cGUuZm9ybWF0VmFsdWVGcm9tVWludExpdGVyYWwgPSB2YWx1ZSA9PiB2YWx1
ZSB8IDA7CisgICAgICAgICAgICAgICAgIHR5cGUuYWxsVmFsdWVzID0gZnVuY3Rpb24qKCkgewor
ICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gMHhmZmZmZmZmZjsgKytp
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gaSB8IDA7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgeWllbGQge3ZhbHVlOiB2YWx1ZSwgbmFtZTogdmFsdWV9OworICAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgIH0p
OworCisgICAgICAgICB0aGlzLl9tYXAuc2V0KAorICAgICAgICAgICAgICJuYXRpdmUgdHlwZWRl
ZiBoYWxmIiwKKyAgICAgICAgICAgICB0eXBlID0+IHsKKyAgICAgICAgICAgICAgICAgdGhpcy5o
YWxmID0gdHlwZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5pc1ByaW1pdGl2ZSA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgIHR5cGUuc2l6ZSA9IDE7CisgICAgICAgICAgICAgICAgIHR5cGUuaXNG
bG9hdGluZyA9IHRydWU7CisgICAgICAgICAgICAgICAgIHR5cGUuaXNOdW1iZXIgPSB0cnVlOwor
ICAgICAgICAgICAgICAgICB0eXBlLmNhblJlcHJlc2VudCA9IHZhbHVlID0+IGlzQml0d2lzZUVx
dWl2YWxlbnQoY2FzdFRvSGFsZih2YWx1ZSksIHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgdHlw
ZS5wb3B1bGF0ZURlZmF1bHRWYWx1ZSA9IChidWZmZXIsIG9mZnNldCkgPT4gYnVmZmVyLnNldChv
ZmZzZXQsIDApOworICAgICAgICAgICAgICAgICB0eXBlLmZvcm1hdFZhbHVlRnJvbUludExpdGVy
YWwgPSB2YWx1ZSA9PiB2YWx1ZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5mb3JtYXRWYWx1ZUZy
b21VaW50TGl0ZXJhbCA9IHZhbHVlID0+IHZhbHVlOworICAgICAgICAgICAgICAgICB0eXBlLmZv
cm1hdFZhbHVlRnJvbUZsb2F0TGl0ZXJhbCA9IHZhbHVlID0+IGNhc3RUb0hhbGYodmFsdWUpOwor
ICAgICAgICAgICAgIH0pOworCisgICAgICAgICB0aGlzLl9tYXAuc2V0KAorICAgICAgICAgICAg
ICJuYXRpdmUgdHlwZWRlZiBmbG9hdCIsCisgICAgICAgICAgICAgdHlwZSA9PiB7CisgICAgICAg
ICAgICAgICAgIHRoaXMuZmxvYXQgPSB0eXBlOworICAgICAgICAgICAgICAgICB0eXBlLmlzUHJp
bWl0aXZlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5zaXplID0gMTsKKyAgICAgICAg
ICAgICAgICAgdHlwZS5pc0Zsb2F0aW5nID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5p
c051bWJlciA9IHRydWU7CisgICAgICAgICAgICAgICAgIHR5cGUuY2FuUmVwcmVzZW50ID0gdmFs
dWUgPT4gaXNCaXR3aXNlRXF1aXZhbGVudChNYXRoLmZyb3VuZCh2YWx1ZSksIHZhbHVlKTsKKyAg
ICAgICAgICAgICAgICAgdHlwZS5wb3B1bGF0ZURlZmF1bHRWYWx1ZSA9IChidWZmZXIsIG9mZnNl
dCkgPT4gYnVmZmVyLnNldChvZmZzZXQsIDApOworICAgICAgICAgICAgICAgICB0eXBlLmZvcm1h
dFZhbHVlRnJvbUludExpdGVyYWwgPSB2YWx1ZSA9PiB2YWx1ZTsKKyAgICAgICAgICAgICAgICAg
dHlwZS5mb3JtYXRWYWx1ZUZyb21VaW50TGl0ZXJhbCA9IHZhbHVlID0+IHZhbHVlOworICAgICAg
ICAgICAgICAgICB0eXBlLmZvcm1hdFZhbHVlRnJvbUZsb2F0TGl0ZXJhbCA9IHZhbHVlID0+IE1h
dGguZnJvdW5kKHZhbHVlKTsKKyAgICAgICAgICAgICB9KTsKKworICAgICAgICB0aGlzLl9tYXAu
c2V0KAorICAgICAgICAgICAgICJuYXRpdmUgdHlwZWRlZiBhdG9taWNfaW50IiwKKyAgICAgICAg
ICAgICB0eXBlID0+IHsKKyAgICAgICAgICAgICAgICAgdGhpcy5hdG9taWNfaW50ID0gdHlwZTsK
KyAgICAgICAgICAgICB9KTsKKworICAgICAgICB0aGlzLl9tYXAuc2V0KAorICAgICAgICAgICAg
ICJuYXRpdmUgdHlwZWRlZiBhdG9taWNfdWludCIsCisgICAgICAgICAgICAgdHlwZSA9PiB7Cisg
ICAgICAgICAgICAgICAgIHRoaXMuYXRvbWljX3VpbnQgPSB0eXBlOworICAgICAgICAgICAgIH0p
OwogCiAgICAgICAgIGZvciAobGV0IHZlY3RvclR5cGUgb2YgVmVjdG9yRWxlbWVudFR5cGVzKSB7
Ci0gICAgICAgICAgICBmb3IgKGxldCB2ZWN0b3JTaXplIG9mIFZlY3RvckVsZW1lbnRTaXplcykK
LSAgICAgICAgICAgICAgICB0aGlzLl9tYXAuc2V0KGBuYXRpdmUgdHlwZWRlZiB2ZWN0b3I8JHt2
ZWN0b3JUeXBlfSwgJHt2ZWN0b3JTaXplfT5gLCB0eXBlID0+IHt9KTsKKyAgICAgICAgICAgIGZv
ciAobGV0IHZlY3RvclNpemUgb2YgVmVjdG9yRWxlbWVudFNpemVzKSB7CisgICAgICAgICAgICAg
ICAgdGhpcy5fbWFwLnNldChgbmF0aXZlIHR5cGVkZWYgdmVjdG9yPCR7dmVjdG9yVHlwZX0sICR7
dmVjdG9yU2l6ZX0+YCwgdHlwZSA9PiB7CisgICAgICAgICAgICAgICAgICAgIHRoaXNbYHZlY3Rv
cjwke3ZlY3RvclR5cGV9LCAke3ZlY3RvclNpemV9PmBdID0gdHlwZTsKKyAgICAgICAgICAgICAg
ICB9KTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICB0aGlz
Ll9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBvcGVyYXRvciBpbnQodWludCkiLAogICAg
ICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9
IChbdmFsdWVdKSA9PiBFUHRyLmJveCh2YWx1ZS5sb2FkVmFsdWUoKSB8IDApOwogICAgICAgICAg
ICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAi
bmF0aXZlIG9wZXJhdG9yIGludCh1Y2hhcikiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAg
ICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbdmFsdWVdKSA9PiBFUHRyLmJveCh2
YWx1ZS5sb2FkVmFsdWUoKSB8IDApOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAg
ICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIG9wZXJhdG9yIGludChmbG9h
dCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1l
bnRhdGlvbiA9IChbdmFsdWVdKSA9PiBFUHRyLmJveCh2YWx1ZS5sb2FkVmFsdWUoKSB8IDApOwog
ICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAg
ICAgICAgICAibmF0aXZlIG9wZXJhdG9yIHVpbnQoaW50KSIsCiAgICAgICAgICAgICBmdW5jID0+
IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFt2YWx1ZV0pID0+IEVQ
dHIuYm94KHZhbHVlLmxvYWRWYWx1ZSgpID4+PiAwKTsKICAgICAgICAgICAgIH0pOwotICAgICAg
ICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBvcGVyYXRv
ciB1aW50KHVjaGFyKSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBm
dW5jLmltcGxlbWVudGF0aW9uID0gKFt2YWx1ZV0pID0+IEVQdHIuYm94KHZhbHVlLmxvYWRWYWx1
ZSgpID4+PiAwKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9t
YXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBvcGVyYXRvciB1aW50KGZsb2F0KSIsCiAgICAg
ICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0g
KFt2YWx1ZV0pID0+IEVQdHIuYm94KHZhbHVlLmxvYWRWYWx1ZSgpID4+PiAwKTsKICAgICAgICAg
ICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAg
Im5hdGl2ZSBvcGVyYXRvciB1Y2hhcihpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAg
ICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW3ZhbHVlXSkgPT4gRVB0ci5ib3go
dmFsdWUubG9hZFZhbHVlKCkgJiAweGZmKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwog
ICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBvcGVyYXRvciB1Y2hh
cih1aW50KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmlt
cGxlbWVudGF0aW9uID0gKFt2YWx1ZV0pID0+IEVQdHIuYm94KHZhbHVlLmxvYWRWYWx1ZSgpICYg
MHhmZik7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNl
dCgKICAgICAgICAgICAgICJuYXRpdmUgb3BlcmF0b3IgdWNoYXIoZmxvYXQpIiwKICAgICAgICAg
ICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW3Zh
bHVlXSkgPT4gRVB0ci5ib3godmFsdWUubG9hZFZhbHVlKCkgJiAweGZmKTsKICAgICAgICAgICAg
IH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5h
dGl2ZSBvcGVyYXRvciBmbG9hdChpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAg
ICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW3ZhbHVlXSkgPT4gRVB0ci5ib3goTWF0
aC5mcm91bmQodmFsdWUubG9hZFZhbHVlKCkpKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAK
KwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBvcGVyYXRvciBm
bG9hdCh1aW50KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5j
LmltcGxlbWVudGF0aW9uID0gKFt2YWx1ZV0pID0+IEVQdHIuYm94KE1hdGguZnJvdW5kKHZhbHVl
LmxvYWRWYWx1ZSgpKSk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgCisKICAgICAgICAgdGhp
cy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUgb3BlcmF0b3IgZmxvYXQodWNoYXIpIiwK
ICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRp
b24gPSAoW3ZhbHVlXSkgPT4gRVB0ci5ib3goTWF0aC5mcm91bmQodmFsdWUubG9hZFZhbHVlKCkp
KTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAog
ICAgICAgICAgICAgIm5hdGl2ZSBpbnQgb3BlcmF0b3IrKGludCxpbnQpIiwKICAgICAgICAgICAg
IGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQs
IHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3goKGxlZnQubG9hZFZhbHVl
KCkgKyByaWdodC5sb2FkVmFsdWUoKSkgfCAwKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAK
KwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSB1aW50IG9wZXJh
dG9yKyh1aW50LHVpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAg
IGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAg
ICAgICAgRVB0ci5ib3goKGxlZnQubG9hZFZhbHVlKCkgKyByaWdodC5sb2FkVmFsdWUoKSkgPj4+
IDApOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQo
CiAgICAgICAgICAgICAibmF0aXZlIGZsb2F0IG9wZXJhdG9yKyhmbG9hdCxmbG9hdCkiLAogICAg
ICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9
IChbbGVmdCwgcmlnaHRdKSA9PgogICAgICAgICAgICAgICAgICAgICBFUHRyLmJveChNYXRoLmZy
b3VuZChsZWZ0LmxvYWRWYWx1ZSgpICsgcmlnaHQubG9hZFZhbHVlKCkpKTsKICAgICAgICAgICAg
IH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5h
dGl2ZSBpbnQgb3BlcmF0b3ItKGludCxpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAg
ICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAg
ICAgICAgICAgICAgICAgICAgRVB0ci5ib3goKGxlZnQubG9hZFZhbHVlKCkgLSByaWdodC5sb2Fk
VmFsdWUoKSkgfCAwKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlz
Ll9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSB1aW50IG9wZXJhdG9yLSh1aW50LHVpbnQp
IiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50
YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3go
KGxlZnQubG9hZFZhbHVlKCkgLSByaWdodC5sb2FkVmFsdWUoKSkgPj4+IDApOwogICAgICAgICAg
ICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAi
bmF0aXZlIGZsb2F0IG9wZXJhdG9yLShmbG9hdCxmbG9hdCkiLAogICAgICAgICAgICAgZnVuYyA9
PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRd
KSA9PgogICAgICAgICAgICAgICAgICAgICBFUHRyLmJveChNYXRoLmZyb3VuZChsZWZ0LmxvYWRW
YWx1ZSgpIC0gcmlnaHQubG9hZFZhbHVlKCkpKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAK
KwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBpbnQgb3BlcmF0
b3IqKGludCxpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewpAQCAtMjc2LDIyOSArNDM2LDIy
OSBAQCBjbGFzcyBJbnRyaW5zaWNzIHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVQdHIu
Ym94KChsZWZ0LmxvYWRWYWx1ZSgpICogcmlnaHQubG9hZFZhbHVlKCkpIHwgMCk7CiAgICAgICAg
ICAgICAgICAgfTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9t
YXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSB1aW50IG9wZXJhdG9yKih1aW50LHVpbnQpIiwK
ICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRp
b24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3goKGxl
ZnQubG9hZFZhbHVlKCkgKiByaWdodC5sb2FkVmFsdWUoKSkgPj4+IDApOwogICAgICAgICAgICAg
fSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0
aXZlIGZsb2F0IG9wZXJhdG9yKihmbG9hdCxmbG9hdCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7
CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9
PgogICAgICAgICAgICAgICAgICAgICBFUHRyLmJveChNYXRoLmZyb3VuZChsZWZ0LmxvYWRWYWx1
ZSgpICogcmlnaHQubG9hZFZhbHVlKCkpKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwog
ICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBpbnQgb3BlcmF0b3Iv
KGludCxpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMu
aW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAg
RVB0ci5ib3goKGxlZnQubG9hZFZhbHVlKCkgLyByaWdodC5sb2FkVmFsdWUoKSkgfCAwKTsKICAg
ICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAg
ICAgICAgIm5hdGl2ZSB1aW50IG9wZXJhdG9yLyh1aW50LHVpbnQpIiwKICAgICAgICAgICAgIGZ1
bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJp
Z2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3goKGxlZnQubG9hZFZhbHVlKCkg
LyByaWdodC5sb2FkVmFsdWUoKSkgPj4+IDApOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAor
CiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIGludCBvcGVyYXRv
ciYoaW50LGludCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVu
Yy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PgogICAgICAgICAgICAgICAgICAg
ICBFUHRyLmJveChsZWZ0LmxvYWRWYWx1ZSgpICYgcmlnaHQubG9hZFZhbHVlKCkpOwogICAgICAg
ICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAg
ICAibmF0aXZlIHVpbnQgb3BlcmF0b3ImKHVpbnQsdWludCkiLAogICAgICAgICAgICAgZnVuYyA9
PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRd
KSA9PgogICAgICAgICAgICAgICAgICAgICBFUHRyLmJveCgobGVmdC5sb2FkVmFsdWUoKSAmIHJp
Z2h0LmxvYWRWYWx1ZSgpKSA+Pj4gMCk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgCisKICAg
ICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUgaW50IG9wZXJhdG9yfChp
bnQsaW50KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmlt
cGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+CiAgICAgICAgICAgICAgICAgICAgIEVQ
dHIuYm94KGxlZnQubG9hZFZhbHVlKCkgfCByaWdodC5sb2FkVmFsdWUoKSk7CiAgICAgICAgICAg
ICB9KTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJu
YXRpdmUgdWludCBvcGVyYXRvcnwodWludCx1aW50KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsK
ICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+
CiAgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KChsZWZ0LmxvYWRWYWx1ZSgpIHwgcmlnaHQu
bG9hZFZhbHVlKCkpID4+PiAwKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAg
ICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBpbnQgb3BlcmF0b3JeKGludCxp
bnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVt
ZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5i
b3gobGVmdC5sb2FkVmFsdWUoKSBeIHJpZ2h0LmxvYWRWYWx1ZSgpKTsKICAgICAgICAgICAgIH0p
OwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2
ZSB1aW50IG9wZXJhdG9yXih1aW50LHVpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAg
ICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAg
ICAgICAgICAgICAgICAgICAgRVB0ci5ib3goKGxlZnQubG9hZFZhbHVlKCkgXiByaWdodC5sb2Fk
VmFsdWUoKSkgPj4+IDApOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRo
aXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIGludCBvcGVyYXRvcjw8KGludCx1aW50
KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVu
dGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+CiAgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94
KGxlZnQubG9hZFZhbHVlKCkgPDwgcmlnaHQubG9hZFZhbHVlKCkpOwogICAgICAgICAgICAgfSk7
Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZl
IHVpbnQgb3BlcmF0b3I8PCh1aW50LHVpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAg
ICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAg
ICAgICAgICAgICAgICAgICAgRVB0ci5ib3goKGxlZnQubG9hZFZhbHVlKCkgPDwgcmlnaHQubG9h
ZFZhbHVlKCkpID4+PiAwKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0
aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBpbnQgb3BlcmF0b3I+PihpbnQsdWlu
dCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1l
bnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PgogICAgICAgICAgICAgICAgICAgICBFUHRyLmJv
eChsZWZ0LmxvYWRWYWx1ZSgpID4+IHJpZ2h0LmxvYWRWYWx1ZSgpKTsKICAgICAgICAgICAgIH0p
OwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2
ZSB1aW50IG9wZXJhdG9yPj4odWludCx1aW50KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAg
ICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+CiAg
ICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KGxlZnQubG9hZFZhbHVlKCkgPj4+IHJpZ2h0Lmxv
YWRWYWx1ZSgpKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9t
YXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBpbnQgb3BlcmF0b3J+KGludCkiLAogICAgICAg
ICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChb
dmFsdWVdKSA9PiBFUHRyLmJveCh+dmFsdWUubG9hZFZhbHVlKCkpOwogICAgICAgICAgICAgfSk7
Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZl
IHVpbnQgb3BlcmF0b3J+KHVpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAg
ICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW3ZhbHVlXSkgPT4gRVB0ci5ib3goKH52YWx1
ZS5sb2FkVmFsdWUoKSkgPj4+IDApOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAg
ICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIGZsb2F0IG9wZXJhdG9yLyhm
bG9hdCxmbG9hdCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVu
Yy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PgogICAgICAgICAgICAgICAgICAg
ICBFUHRyLmJveChNYXRoLmZyb3VuZChsZWZ0LmxvYWRWYWx1ZSgpIC8gcmlnaHQubG9hZFZhbHVl
KCkpKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0
KAogICAgICAgICAgICAgIm5hdGl2ZSBib29sIG9wZXJhdG9yPT0oaW50LGludCkiLAogICAgICAg
ICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChb
bGVmdCwgcmlnaHRdKSA9PgogICAgICAgICAgICAgICAgICAgICBFUHRyLmJveChsZWZ0LmxvYWRW
YWx1ZSgpID09IHJpZ2h0LmxvYWRWYWx1ZSgpKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAK
KwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBib29sIG9wZXJh
dG9yPT0odWludCx1aW50KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAg
ICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+CiAgICAgICAgICAgICAg
ICAgICAgIEVQdHIuYm94KGxlZnQubG9hZFZhbHVlKCkgPT0gcmlnaHQubG9hZFZhbHVlKCkpOwog
ICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAg
ICAgICAgICAibmF0aXZlIGJvb2wgb3BlcmF0b3I9PShib29sLGJvb2wpIiwKICAgICAgICAgICAg
IGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQs
IHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3gobGVmdC5sb2FkVmFsdWUo
KSA9PSByaWdodC5sb2FkVmFsdWUoKSk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgCisKICAg
ICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUgYm9vbCBvcGVyYXRvcj09
KGZsb2F0LGZsb2F0KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBm
dW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+CiAgICAgICAgICAgICAgICAg
ICAgIEVQdHIuYm94KGxlZnQubG9hZFZhbHVlKCkgPT0gcmlnaHQubG9hZFZhbHVlKCkpOwogICAg
ICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAg
ICAgICAibmF0aXZlIGJvb2wgb3BlcmF0b3I8KGludCxpbnQpIiwKICAgICAgICAgICAgIGZ1bmMg
PT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0
XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3gobGVmdC5sb2FkVmFsdWUoKSA8IHJp
Z2h0LmxvYWRWYWx1ZSgpKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0
aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBib29sIG9wZXJhdG9yPCh1aW50LHVp
bnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVt
ZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5i
b3gobGVmdC5sb2FkVmFsdWUoKSA8IHJpZ2h0LmxvYWRWYWx1ZSgpKTsKICAgICAgICAgICAgIH0p
OwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2
ZSBib29sIG9wZXJhdG9yPChmbG9hdCxmbG9hdCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAg
ICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9Pgog
ICAgICAgICAgICAgICAgICAgICBFUHRyLmJveChsZWZ0LmxvYWRWYWx1ZSgpIDwgcmlnaHQubG9h
ZFZhbHVlKCkpOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21h
cC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIGJvb2wgb3BlcmF0b3I8PShpbnQsaW50KSIsCiAg
ICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9u
ID0gKFtsZWZ0LCByaWdodF0pID0+CiAgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KGxlZnQu
bG9hZFZhbHVlKCkgPD0gcmlnaHQubG9hZFZhbHVlKCkpOwogICAgICAgICAgICAgfSk7Ci0gICAg
ICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIGJvb2wg
b3BlcmF0b3I8PSh1aW50LHVpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAg
ICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAg
ICAgICAgICAgICAgRVB0ci5ib3gobGVmdC5sb2FkVmFsdWUoKSA8PSByaWdodC5sb2FkVmFsdWUo
KSk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgK
ICAgICAgICAgICAgICJuYXRpdmUgYm9vbCBvcGVyYXRvcjw9KGZsb2F0LGZsb2F0KSIsCiAgICAg
ICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0g
KFtsZWZ0LCByaWdodF0pID0+CiAgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KGxlZnQubG9h
ZFZhbHVlKCkgPD0gcmlnaHQubG9hZFZhbHVlKCkpOwogICAgICAgICAgICAgfSk7Ci0gICAgICAg
IAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIGJvb2wgb3Bl
cmF0b3I+KGludCxpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAg
IGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAg
ICAgICAgRVB0ci5ib3gobGVmdC5sb2FkVmFsdWUoKSA+IHJpZ2h0LmxvYWRWYWx1ZSgpKTsKICAg
ICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAg
ICAgICAgIm5hdGl2ZSBib29sIG9wZXJhdG9yPih1aW50LHVpbnQpIiwKICAgICAgICAgICAgIGZ1
bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJp
Z2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3gobGVmdC5sb2FkVmFsdWUoKSA+
IHJpZ2h0LmxvYWRWYWx1ZSgpKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAg
ICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBib29sIG9wZXJhdG9yPihmbG9h
dCxmbG9hdCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5p
bXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PgogICAgICAgICAgICAgICAgICAgICBF
UHRyLmJveChsZWZ0LmxvYWRWYWx1ZSgpID4gcmlnaHQubG9hZFZhbHVlKCkpOwogICAgICAgICAg
ICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAi
bmF0aXZlIGJvb2wgb3BlcmF0b3I+PShpbnQsaW50KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsK
ICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+
CiAgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KGxlZnQubG9hZFZhbHVlKCkgPj0gcmlnaHQu
bG9hZFZhbHVlKCkpOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMu
X21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIGJvb2wgb3BlcmF0b3I+PSh1aW50LHVpbnQp
IiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50
YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3go
bGVmdC5sb2FkVmFsdWUoKSA+PSByaWdodC5sb2FkVmFsdWUoKSk7CiAgICAgICAgICAgICB9KTsK
LSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUg
Ym9vbCBvcGVyYXRvcj49KGZsb2F0LGZsb2F0KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKQEAg
LTUzOCw3ICs2OTgsNyBAQCBjbGFzcyBJbnRyaW5zaWNzIHsKICAgICAgICAgZm9yIChsZXQgc2V0
dGVyIG9mIEJ1aWx0aW5WZWN0b3JTZXR0ZXIuZnVuY3Rpb25zKCkpCiAgICAgICAgICAgICB0aGlz
Ll9tYXAuc2V0KHNldHRlci50b1N0cmluZygpLCBmdW5jID0+IHNldHRlci5pbnN0YW50aWF0ZUlt
cGxlbWVudGF0aW9uKGZ1bmMpKTsKICAgICB9Ci0gICAgCisKICAgICBhZGQodGhpbmcpCiAgICAg
ewogICAgICAgICBsZXQgaW50cmluc2ljID0gdGhpcy5fbWFwLmdldCh0aGluZy50b1N0cmluZygp
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05hbWVDb250ZXh0
LmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmFtZUNvbnRleHQuanMKaW5kZXgg
MWJhYjNmYzU2MDI2MDEwNzdiM2ZhODg1YTYwNTRhYjg2MGIwYTE5My4uZGM2ODU3OGZmNTU2YjMx
MmIwOTI3ZWYzYzBkZmZhMDA2OGYxYmU2MyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvTmFtZUNvbnRleHQuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvTmFtZUNvbnRleHQuanMKQEAgLTY5LDExICs2OSwzMyBAQCBjbGFzcyBOYW1lQ29udGV4
dCB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAorICAgICAgICBpZiAodGhpbmcu
a2luZCA9PSBUeXBlKSB7CisgICAgICAgICAgICB0aGlzLl9zZXQuYWRkKHRoaW5nKTsKKyAgICAg
ICAgICAgIGlmICh0aGluZy5uYW1lID09ICJ2ZWN0b3IiKSB7CisgICAgICAgICAgICAgICAgbGV0
IGFycmF5ID0gdGhpcy5fbWFwLmdldCh0aGluZy5uYW1lKTsKKyAgICAgICAgICAgICAgICBpZiAo
IWFycmF5KSB7CisgICAgICAgICAgICAgICAgICAgIGFycmF5ID0gW107CisgICAgICAgICAgICAg
ICAgICAgIGFycmF5LmtpbmQgPSBUeXBlOworICAgICAgICAgICAgICAgICAgICB0aGlzLl9tYXAu
c2V0KHRoaW5nLm5hbWUsIGFycmF5KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgaWYgKGFycmF5LmtpbmQgIT0gVHlwZSkKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3
IFdUeXBlRXJyb3IodGhpbmcub3JpZ2luLm9yaWdpblN0cmluZywgIkNhbm5vdCByZXVzZSB0eXBl
IG5hbWUgZm9yIGZ1bmN0aW9uOiAiICsgdGhpbmcubmFtZSk7CisgICAgICAgICAgICAgICAgYXJy
YXkucHVzaCh0aGluZyk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5fbWFwLmhhcyh0aGluZy5uYW1lKSkKKyAg
ICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3IodGhpbmcub3JpZ2luLm9yaWdp
blN0cmluZywgIkR1cGxpY2F0ZSBuYW1lOiAiICsgdGhpbmcubmFtZSk7CisgICAgICAgICAgICAg
ICAgdGhpcy5fbWFwLnNldCh0aGluZy5uYW1lLCB0aGluZyk7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIGlmICh0aGlzLl9t
YXAuaGFzKHRoaW5nLm5hbWUpKQogICAgICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3IodGhp
bmcub3JpZ2luLm9yaWdpblN0cmluZywgIkR1cGxpY2F0ZSBuYW1lOiAiICsgdGhpbmcubmFtZSk7
CiAKICAgICAgICAgdGhpcy5fc2V0LmFkZCh0aGluZyk7CiAgICAgICAgIHRoaXMuX21hcC5zZXQo
dGhpbmcubmFtZSwgdGhpbmcpOworCiAgICAgfQogICAgIAogICAgIGdldChraW5kLCBuYW1lKQpA
QCAtMTAyLDYgKzEyNCwxMCBAQCBjbGFzcyBOYW1lQ29udGV4dCB7CiAgICAgICAgICAgICBmb3Ig
KGxldCBmdW5jIG9mIHRoaW5nKQogICAgICAgICAgICAgICAgIHlpZWxkIGZ1bmM7CiAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0gZWxzZSBpZiAodGhpbmcua2luZCA9PT0gVHlwZSAmJiAo
dGhpbmcgaW5zdGFuY2VvZiBBcnJheSkpIHsKKyAgICAgICAgICAgIGZvciAobGV0IHR5cGUgb2Yg
dGhpbmcpCisgICAgICAgICAgICAgICAgeWllbGQgdHlwZTsKKyAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgICAgICB5aWVsZCB0aGluZzsKICAgICB9CkBAIC0xNjMsOCArMTg5LDgg
QEAgY2xhc3MgTmFtZUNvbnRleHQgewogICAgIHsKICAgICAgICAgZm9yIChsZXQgdmFsdWUgb2Yg
dGhpcy5fbWFwLnZhbHVlcygpKSB7CiAgICAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBB
cnJheSkgewotICAgICAgICAgICAgICAgIGZvciAobGV0IGZ1bmMgb2YgdmFsdWUpCi0gICAgICAg
ICAgICAgICAgICAgIHlpZWxkIGZ1bmM7CisgICAgICAgICAgICAgICAgZm9yIChsZXQgdGhpbmcg
b2YgdmFsdWUpCisgICAgICAgICAgICAgICAgICAgIHlpZWxkIHRoaW5nOwogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgeWllbGQgdmFsdWU7CmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYW1lUmVzb2x2ZXIuanMg
Yi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYW1lUmVzb2x2ZXIuanMKaW5kZXggZjYx
NWEyZmI0ZTg3ZGMxZGViN2IwMWI1NzJmYjdhZjYyNmFiZDA5NS4uOGU0YjAyMTQwNjI5MzdiNjIx
MmVlYWJhM2IwY2ZlMGI1YTM1OWEzMyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvTmFtZVJlc29sdmVyLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL05hbWVSZXNvbHZlci5qcwpAQCAtMTIwLDEyICsxMjAsMTYgQEAgY2xhc3MgTmFtZVJlc29s
dmVyIGV4dGVuZHMgVmlzaXRvciB7CiAgICAgCiAgICAgdmlzaXRUeXBlUmVmKG5vZGUpCiAgICAg
eworICAgICAgICBzdXBlci52aXNpdFR5cGVSZWYobm9kZSk7CiAgICAgICAgIGxldCB0eXBlID0g
bm9kZS50eXBlOwogICAgICAgICBpZiAoIXR5cGUpIHsKICAgICAgICAgICAgIHR5cGUgPSB0aGlz
Ll9uYW1lQ29udGV4dC5nZXQoVHlwZSwgbm9kZS5uYW1lKTsKICAgICAgICAgICAgIGlmICghdHlw
ZSkKICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihub2RlLm9yaWdpbi5vcmln
aW5TdHJpbmcsICJDb3VsZCBub3QgZmluZCB0eXBlIG5hbWVkICIgKyBub2RlLm5hbWUpOwotICAg
ICAgICAgICAgbm9kZS50eXBlID0gdHlwZTsKKyAgICAgICAgICAgIGlmICh0eXBlIGluc3RhbmNl
b2YgQXJyYXkpCisgICAgICAgICAgICAgICAgbm9kZS5wb3NzaWJsZU92ZXJsb2FkcyA9IHR5cGU7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbm9kZS50eXBlID0gdHlwZTsKICAg
ICAgICAgfQogICAgIH0KICAgICAKQEAgLTIwOCw5ICsyMTIsNCBAQCBjbGFzcyBOYW1lUmVzb2x2
ZXIgZXh0ZW5kcyBWaXNpdG9yIHsKICAgICAgICAgCiAgICAgICAgIHN1cGVyLnZpc2l0Q2FsbEV4
cHJlc3Npb24obm9kZSk7CiAgICAgfQotCi0gICAgdmlzaXRWZWN0b3JUeXBlKG5vZGUpCi0gICAg
ewotICAgICAgICBub2RlLmVsZW1lbnRUeXBlLnZpc2l0KHRoaXMpOwotICAgIH0KIH0KZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05hdGl2ZVR5cGUuanMgYi9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYXRpdmVUeXBlLmpzCmluZGV4IGUyZDg1MWNiY2Ni
YTNhOTcyMzRjN2JkMzkyOTA3ODI5Y2E5ZTA1ZjIuLjIzODFiNWE2YjBiMDEwZTBmZGQ0ZGM1MzU1
MGE4ZWE2YjRmODM0N2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L05hdGl2ZVR5cGUuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmF0aXZl
VHlwZS5qcwpAQCAtMjUsMTEgKzI1LDE0IEBACiAidXNlIHN0cmljdCI7CiAKIGNsYXNzIE5hdGl2
ZVR5cGUgZXh0ZW5kcyBUeXBlIHsKLSAgICBjb25zdHJ1Y3RvcihvcmlnaW4sIG5hbWUpCisgICAg
Y29uc3RydWN0b3Iob3JpZ2luLCBuYW1lLCB0eXBlQXJndW1lbnRzKQogICAgIHsKKyAgICAgICAg
aWYgKCEodHlwZUFyZ3VtZW50cyBpbnN0YW5jZW9mIEFycmF5KSkKKyAgICAgICAgICAgIHRocm93
IG5ldyBFcnJvcigidHlwZSBwYXJhbWV0ZXJzIG5vdCBhcnJheTogIiArIHR5cGVBcmd1bWVudHMp
OwogICAgICAgICBzdXBlcigpOwogICAgICAgICB0aGlzLl9vcmlnaW4gPSBvcmlnaW47CiAgICAg
ICAgIHRoaXMuX25hbWUgPSBuYW1lOworICAgICAgICB0aGlzLl90eXBlQXJndW1lbnRzID0gdHlw
ZUFyZ3VtZW50czsKICAgICAgICAgdGhpcy5faXNOdW1iZXIgPSBmYWxzZTsKICAgICAgICAgdGhp
cy5faXNJbnQgPSBmYWxzZTsKICAgICAgICAgdGhpcy5faXNGbG9hdGluZyA9IGZhbHNlOwpAQCAt
MzgsNiArNDEsNyBAQCBjbGFzcyBOYXRpdmVUeXBlIGV4dGVuZHMgVHlwZSB7CiAgICAgCiAgICAg
Z2V0IG9yaWdpbigpIHsgcmV0dXJuIHRoaXMuX29yaWdpbjsgfQogICAgIGdldCBuYW1lKCkgeyBy
ZXR1cm4gdGhpcy5fbmFtZTsgfQorICAgIGdldCB0eXBlQXJndW1lbnRzKCkgeyByZXR1cm4gdGhp
cy5fdHlwZUFyZ3VtZW50czsgfQogICAgIGdldCBpc05hdGl2ZSgpIHsgcmV0dXJuIHRydWU7IH0K
ICAgICAKICAgICAvLyBXZSBsZXQgSW50cmluc2ljcy5qcyBzZXQgdGhlc2UgYXMgaXQgbGlrZXMu
CkBAIC01MiwxOSArNTYsMTggQEAgY2xhc3MgTmF0aXZlVHlwZSBleHRlbmRzIFR5cGUgewogICAg
IAogICAgIHRvU3RyaW5nKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBgbmF0aXZlIHR5cGVkZWYg
JHt0aGlzLm5hbWV9YDsKKyAgICAgICAgbGV0IHJlc3VsdCA9IGBuYXRpdmUgdHlwZWRlZiAke3Ro
aXMubmFtZX1gOworICAgICAgICBpZiAodGhpcy50eXBlQXJndW1lbnRzLmxlbmd0aCkKKyAgICAg
ICAgICAgIHJlc3VsdCArPSAiPCIgKyB0aGlzLnR5cGVBcmd1bWVudHMuam9pbigiLCIpICsgIj4i
OworICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKICAgICBzdGF0aWMgY3JlYXRl
KG9yaWdpbiwgbmFtZSwgdHlwZUFyZ3VtZW50cykKICAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBG
b3IgbmF0aXZlIHR5cGVzIGxpa2UgVGV4dHVyZTFEIHRoaXMgc2hvdWxkIHJlc29sdmUgdGhlIHR5
cGUgdG8gc29tZXRoaW5nIGNvbmNyZXRlIGJ5IGNoYW5naW5nIHRoZSB0eXBlIG5hbWUuCi0gICAg
ICAgIGlmICh0eXBlQXJndW1lbnRzLmxlbmd0aCkKLSAgICAgICAgICAgIHRocm93IG5ldyBXVHlw
ZUVycm9yKG9yaWdpbi5vcmlnaW5TdHJpbmcsIGAke25hbWV9PCR7dHlwZUFyZ3VtZW50cy5qb2lu
KCIsIil9PjogU3VwcG9ydCBmb3IgbmF0aXZlIHR5cGVzIHdpdGggdHlwZSBhcmd1bWVudHMgaXMg
Y3VycmVudGx5IHVuaW1wbGVtZW50ZWQuYCk7CisgICAgICAgIGlmIChuYW1lID09ICJ2ZWN0b3Ii
KQorICAgICAgICAgICAgcmV0dXJuIG5ldyBWZWN0b3JUeXBlKG9yaWdpbiwgbmFtZSwgdHlwZUFy
Z3VtZW50cyk7CiAKLSAgICAgICAgaWYgKGFsbFZlY3RvclR5cGVOYW1lcygpLmluZGV4T2YobmFt
ZSkgPiAtMSkKLSAgICAgICAgICAgIHJldHVybiBuZXcgVmVjdG9yVHlwZShvcmlnaW4sIG5hbWUp
OwotCi0gICAgICAgIHJldHVybiBuZXcgTmF0aXZlVHlwZShvcmlnaW4sIG5hbWUpOworICAgICAg
ICByZXR1cm4gbmV3IE5hdGl2ZVR5cGUob3JpZ2luLCBuYW1lLCB0eXBlQXJndW1lbnRzKTsKICAg
ICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1ByZXBh
cmUuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QcmVwYXJlLmpzCmluZGV4IDdi
MTYxMzllOTViODFlMmU4ZGE4MzU0YmQ4YzE3OWIxOTBiYWVmYTAuLjlmYWNhODZlMjA1NzU1YjJj
NmE2NmY0MTJiNTY5MmU5OWU3YjAzYWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL1ByZXBhcmUuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
UHJlcGFyZS5qcwpAQCAtNDAsNyArNDAsNiBAQCBsZXQgcHJlcGFyZSA9ICgoKSA9PiB7CiAgICAg
ICAgIH0KICAgICAgICAgCiAgICAgICAgIGZvbGRDb25zdGV4cHJzKHByb2dyYW0pOwotICAgICAg
ICByZW1vdmVUeXBlQXJndW1lbnRzKHByb2dyYW0pOwogCiAgICAgICAgIGxldCBuYW1lUmVzb2x2
ZXIgPSBjcmVhdGVOYW1lUmVzb2x2ZXIocHJvZ3JhbSk7CiAgICAgICAgIHJlc29sdmVOYW1lc0lu
VHlwZXMocHJvZ3JhbSwgbmFtZVJlc29sdmVyKTsKQEAgLTU0LDYgKzUzLDcgQEAgbGV0IHByZXBh
cmUgPSAoKCkgPT4gewogICAgICAgICBzeW50aGVzaXplRGVmYXVsdENvbnN0cnVjdG9yT3BlcmF0
b3IocHJvZ3JhbSk7CiAgICAgICAgIHJlc29sdmVOYW1lc0luRnVuY3Rpb25zKHByb2dyYW0sIG5h
bWVSZXNvbHZlcik7CiAgICAgICAgIHJlc29sdmVUeXBlRGVmc0luRnVuY3Rpb25zKHByb2dyYW0p
OworICAgICAgICBjaGVja1R5cGVzV2l0aEFyZ3VtZW50cyhwcm9ncmFtKTsKICAgICAgICAgCiAg
ICAgICAgIGNoZWNrKHByb2dyYW0pOwogICAgICAgICBjaGVja0xpdGVyYWxUeXBlcyhwcm9ncmFt
KTsKQEAgLTY2LDYgKzY2LDcgQEAgbGV0IHByZXBhcmUgPSAoKCkgPT4gewogICAgICAgICBjaGVj
a0xvb3BzKHByb2dyYW0pOwogICAgICAgICBjaGVja1JlY3Vyc2lvbihwcm9ncmFtKTsKICAgICAg
ICAgY2hlY2tQcm9ncmFtV3JhcHBlZChwcm9ncmFtKTsKKyAgICAgICAgY2hlY2tUeXBlc1dpdGhB
cmd1bWVudHMocHJvZ3JhbSk7CiAgICAgICAgIGZpbmRIaWdoWm9tYmllcyhwcm9ncmFtKTsKICAg
ICAgICAgcHJvZ3JhbS52aXNpdChuZXcgU3RydWN0TGF5b3V0QnVpbGRlcigpKTsKICAgICAgICAg
aW5saW5lKHByb2dyYW0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvUHJvZ3JhbS5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Byb2dyYW0uanMK
aW5kZXggMDY2MjVkOThmYzQxZTc0YzkzZGVjZTgwYjcwY2U1NWM3YWY3NGRkNS4uMTExNmM0ZjU3
NzU2MjIxNWZkZDc0MjhhMzE3NTc5YTkyOTE2NTQxNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvUHJvZ3JhbS5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9Qcm9ncmFtLmpzCkBAIC00OCwxOSArNDgsMjUgQEAgY2xhc3MgUHJvZ3JhbSBleHRl
bmRzIE5vZGUgewogICAgICAgICBpZiAoc3RhdGVtZW50IGluc3RhbmNlb2YgRnVuYykgewogICAg
ICAgICAgICAgbGV0IGFycmF5ID0gdGhpcy5fZnVuY3Rpb25zLmdldChzdGF0ZW1lbnQubmFtZSk7
CiAgICAgICAgICAgICBpZiAoIWFycmF5KQotICAgICAgICAgICAgICAgIHRoaXMuX2Z1bmN0aW9u
cy5zZXQoc3RhdGVtZW50Lm5hbWUsIGFycmF5ID0gW10pOworICAgICAgICAgICAgICAgIHRoaXMu
ZnVuY3Rpb25zLnNldChzdGF0ZW1lbnQubmFtZSwgYXJyYXkgPSBbXSk7CiAgICAgICAgICAgICBh
cnJheS5wdXNoKHN0YXRlbWVudCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoc3RhdGVtZW50IGluc3Rh
bmNlb2YgVHlwZSkKLSAgICAgICAgICAgIHRoaXMuX3R5cGVzLnNldChzdGF0ZW1lbnQubmFtZSwg
c3RhdGVtZW50KTsKLSAgICAgICAgZWxzZQorICAgICAgICB9IGVsc2UgaWYgKHN0YXRlbWVudCBp
bnN0YW5jZW9mIFR5cGUpIHsKKyAgICAgICAgICAgIGlmIChzdGF0ZW1lbnQuaXNOYXRpdmUgJiYg
c3RhdGVtZW50Lm5hbWUgPT0gInZlY3RvciIpIHsKKyAgICAgICAgICAgICAgICBsZXQgYXJyYXkg
PSB0aGlzLnR5cGVzLmdldChzdGF0ZW1lbnQubmFtZSk7CisgICAgICAgICAgICAgICAgaWYgKCFh
cnJheSkKKyAgICAgICAgICAgICAgICAgICAgdGhpcy50eXBlcy5zZXQoc3RhdGVtZW50Lm5hbWUs
IGFycmF5ID0gW10pOworICAgICAgICAgICAgICAgIGFycmF5LnB1c2goc3RhdGVtZW50KTsKKyAg
ICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHRoaXMudHlwZXMuc2V0KHN0YXRlbWVu
dC5uYW1lLCBzdGF0ZW1lbnQpOworICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHRocm93IG5l
dyBFcnJvcigiU3RhdGVtZW50IGlzIG5vdCBhIGZ1bmN0aW9uIG9yIHR5cGU6ICIgKyBzdGF0ZW1l
bnQpOwotICAgICAgICB0aGlzLl90b3BMZXZlbFN0YXRlbWVudHMucHVzaChzdGF0ZW1lbnQpOwot
ICAgICAgICB0aGlzLl9nbG9iYWxOYW1lQ29udGV4dC5hZGQoc3RhdGVtZW50KTsKKyAgICAgICAg
dGhpcy50b3BMZXZlbFN0YXRlbWVudHMucHVzaChzdGF0ZW1lbnQpOworICAgICAgICB0aGlzLmds
b2JhbE5hbWVDb250ZXh0LmFkZChzdGF0ZW1lbnQpOwogICAgIH0KICAgICAKICAgICB0b1N0cmlu
ZygpCiAgICAgewotICAgICAgICBpZiAoIXRoaXMuX3RvcExldmVsU3RhdGVtZW50cy5sZW5ndGgp
CisgICAgICAgIGlmICghdGhpcy50b3BMZXZlbFN0YXRlbWVudHMubGVuZ3RoKQogICAgICAgICAg
ICAgcmV0dXJuICIiOwogICAgICAgICByZXR1cm4gdGhpcy5fdG9wTGV2ZWxTdGF0ZW1lbnRzLmpv
aW4oIjsiKSArICI7IjsKICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9SZWN1cnNpdmVUeXBlQ2hlY2tlci5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL1JlY3Vyc2l2ZVR5cGVDaGVja2VyLmpzCmluZGV4IDkxZjc2NzQyZjYwZDE0YTM3ZTZl
NjA2YzNhYjJmOWMyYzhmYWIxMTYuLmRlM2Q1MjRiYzU0ODhjODcwNWZlYThmNjdiYWQ4N2JlY2Ji
OTdkZGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1JlY3Vyc2l2
ZVR5cGVDaGVja2VyLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1JlY3Vy
c2l2ZVR5cGVDaGVja2VyLmpzCkBAIC01MSw3ICs1MSwxMSBAQCBjbGFzcyBSZWN1cnNpdmVUeXBl
Q2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogICAgIHZpc2l0VHlwZVJlZihub2RlKQogICAgIHsK
ICAgICAgICAgc3VwZXIudmlzaXRUeXBlUmVmKG5vZGUpOwotICAgICAgICBub2RlLnR5cGUudmlz
aXQodGhpcyk7CisgICAgICAgIGlmIChub2RlLnBvc3NpYmxlT3ZlcmxvYWRzKSB7CisgICAgICAg
ICAgICBmb3IgKGxldCBvdmVybG9hZCBvZiBub2RlLnBvc3NpYmxlT3ZlcmxvYWRzKQorICAgICAg
ICAgICAgICAgIG92ZXJsb2FkLnZpc2l0KHRoaXMpOworICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgIG5vZGUudHlwZS52aXNpdCh0aGlzKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1JlbW92ZVR5cGVBcmd1bWVudHMuanMgYi9Ub29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZW1vdmVUeXBlQXJndW1lbnRzLmpzCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA5M2RiOWU2NDdjOTIxYzk1NGU4OTk4Y2UxNjc1ZGU3Y2I2MWYx
NDJiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1JlbW92ZVR5cGVBcmd1bWVudHMuanMKKysrIC9kZXYv
bnVsbApAQCAtMSw2NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLSJ1c2Ugc3RyaWN0IjsKLQotZnVuY3Rpb24gcmVtb3ZlVHlwZUFyZ3VtZW50cyhw
cm9ncmFtKQotewotICAgIGNsYXNzIFJlbW92ZVR5cGVBcmd1bWVudHMgZXh0ZW5kcyBWaXNpdG9y
IHsKLSAgICAgICAgc3RhdGljIHJlc29sdmVOYW1lQW5kQXJndW1lbnRzKG5vZGUpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGlmICghbm9kZS50eXBlQXJndW1lbnRzKQotICAgICAgICAgICAgICAg
IHJldHVybiBub2RlLm5hbWU7Ci0KLSAgICAgICAgICAgIHN3aXRjaCAobm9kZS5uYW1lKSB7Ci0g
ICAgICAgICAgICBjYXNlICJ2ZWN0b3IiOgotICAgICAgICAgICAgICAgIGlmIChub2RlLnR5cGVB
cmd1bWVudHMubGVuZ3RoICE9IDIpCi0gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBXU3lu
dGF4RXJyb3Iobm9kZS5vcmlnaW5TdHJpbmcsIGAke25vZGUubmFtZX0gc2hvdWxkIGhhdmUgMiB0
eXBlIGFyZ3VtZW50cywgZ290ICR7bm9kZS50eXBlQXJndW1lbnRzLmxlbmd0aH0uYCk7Ci0KLSAg
ICAgICAgICAgICAgICBjb25zdCBlbGVtZW50VHlwZU5hbWUgPSBub2RlLnR5cGVBcmd1bWVudHNb
MF0ubmFtZTsKLSAgICAgICAgICAgICAgICBjb25zdCBsZW5ndGhWYWx1ZSA9IG5vZGUudHlwZUFy
Z3VtZW50c1sxXS52YWx1ZTsKLQotICAgICAgICAgICAgICAgIGlmIChWZWN0b3JFbGVtZW50VHlw
ZXMuaW5kZXhPZihlbGVtZW50VHlwZU5hbWUpIDwgMCkKLSAgICAgICAgICAgICAgICAgICAgdGhy
b3cgbmV3IFdTeW50YXhFcnJvcihub2RlLm9yaWdpblN0cmluZywgYCR7ZWxlbWVudFR5cGVOYW1l
fSBpcyBub3QgYSB2YWxpZCB2ZWN0b3IgZWxlbWVudCB0eXBlLmApOwotICAgICAgICAgICAgICAg
IGlmIChWZWN0b3JFbGVtZW50U2l6ZXMuaW5kZXhPZihsZW5ndGhWYWx1ZSkgPCAwKQotICAgICAg
ICAgICAgICAgICAgICB0aHJvdyBuZXcgV1N5bnRheEVycm9yKG5vZGUub3JpZ2luU3RyaW5nLCBg
JHtsZW5ndGhWYWx1ZX0gaXMgbm90IGEgdmFsaWQgc2l6ZSBmb3IgdmVjdG9ycyB3aXRoIGVsZW1l
bnQgdHlwZSAke2VsZW1lbnRUeXBlTmFtZX0uYCk7Ci0KLSAgICAgICAgICAgICAgICByZXR1cm4g
YCR7ZWxlbWVudFR5cGVOYW1lfSR7bGVuZ3RoVmFsdWV9YDsKLSAgICAgICAgICAgIC8vIEZJWE1F
OiBGdXJ0aGVyIGNhc2VzIGZvciBtYXRyaWNlcywgdGV4dHVyZXMsIGV0Yy4KLSAgICAgICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgaWYgKG5vZGUudHlwZUFyZ3VtZW50cy5sZW5ndGgp
Ci0gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBXU3ludGF4RXJyb3IoYCR7bm9kZS5uYW1l
fSR7YXJndW1lbnRzLmpvaW4oIiwgIil9IGlzIG5vdCBhIHBlcm1pdHRlZCBnZW5lcmljIHR5cGUg
b3IgZnVuY3Rpb25gKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gbm9kZS5uYW1lOwotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgdmlzaXRUeXBlUmVmKG5vZGUpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIG5vZGUuX25hbWUgPSBSZW1vdmVUeXBlQXJndW1lbnRzLnJlc29sdmVO
YW1lQW5kQXJndW1lbnRzKG5vZGUpOwotICAgICAgICAgICAgbm9kZS5fdHlwZUFyZ3VtZW50cyA9
IG51bGw7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBwcm9ncmFtLnZpc2l0KG5ldyBSZW1vdmVU
eXBlQXJndW1lbnRzKCkpOwotfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvUmVzb2x2ZU5hbWVzLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmVz
b2x2ZU5hbWVzLmpzCmluZGV4IDJlNDAyYzhkNmMwYTM2MDk4NTYxZTAyNzVlZTUzZTc3OGZkMzg0
YjguLmI4YjUzMzQyNDU5YWU4MzlhY2Y3ZjA3YzJiYmFlYTk2ZThhNTRjZGYgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Jlc29sdmVOYW1lcy5qcworKysgYi9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXNvbHZlTmFtZXMuanMKQEAgLTMxLDggKzMxLDEz
IEBAIGZ1bmN0aW9uIGNyZWF0ZU5hbWVSZXNvbHZlcihwcm9ncmFtKQogCiBmdW5jdGlvbiByZXNv
bHZlTmFtZXNJblR5cGVzKHByb2dyYW0sIG5hbWVSZXNvbHZlcikKIHsKLSAgICBmb3IgKGxldCB0
eXBlIG9mIHByb2dyYW0udHlwZXMudmFsdWVzKCkpCi0gICAgICAgIG5hbWVSZXNvbHZlci5kb1N0
YXRlbWVudCh0eXBlKTsKKyAgICBmb3IgKGxldCB0eXBlIG9mIHByb2dyYW0udHlwZXMudmFsdWVz
KCkpIHsKKyAgICAgICAgaWYgKHR5cGUgaW5zdGFuY2VvZiBBcnJheSkgeworICAgICAgICAgICAg
Zm9yIChsZXQgY29uc3RpdHVlbnRUeXBlIG9mIHR5cGUpCisgICAgICAgICAgICAgICAgbmFtZVJl
c29sdmVyLmRvU3RhdGVtZW50KGNvbnN0aXR1ZW50VHlwZSk7CisgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgbmFtZVJlc29sdmVyLmRvU3RhdGVtZW50KHR5cGUpOworICAgIH0KIH0KIAogZnVu
Y3Rpb24gcmVzb2x2ZU5hbWVzSW5GdW5jdGlvbnMocHJvZ3JhbSwgbmFtZVJlc29sdmVyKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmVzb2x2ZU92ZXJsb2FkSW1w
bC5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Jlc29sdmVPdmVybG9hZEltcGwu
anMKaW5kZXggZDBmMWUzNGQ2MTdlYTI3MjY2NDY3YzE2MTcwNzE1NDY2NGE0NDlhZC4uN2EwOTdi
Y2E0NzBlY2I1NmE2ZWUzZGVmNTJhYWY1Zjc4YjUwNjUxMSAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvUmVzb2x2ZU92ZXJsb2FkSW1wbC5qcworKysgYi9Ub29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXNvbHZlT3ZlcmxvYWRJbXBsLmpzCkBAIC0xMDAsMyAr
MTAwLDI4IEBAIGZ1bmN0aW9uIHJlc29sdmVPdmVybG9hZEltcGwoZnVuY3Rpb25zLCBhcmd1bWVu
dFR5cGVzLCByZXR1cm5UeXBlLCBhbGxvd0VudHJ5UG9pCiAgICAgCiAgICAgcmV0dXJuIHtmYWls
dXJlczogYW1iaWd1aXR5TGlzdC5tYXAob3ZlcmxvYWQgPT4gbmV3IE92ZXJsb2FkUmVzb2x1dGlv
bkZhaWx1cmUob3ZlcmxvYWQuZnVuYywgbWVzc2FnZSkpfTsKIH0KKworZnVuY3Rpb24gcmVzb2x2
ZVR5cGVPdmVybG9hZEltcGwodHlwZXMsIHR5cGVBcmd1bWVudHMpCit7CisgICAgaWYgKCF0eXBl
cykKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJOdWxsIHR5cGVzOyB0aGF0IHNob3VsZCBoYXZl
IGJlZW4gY2F1Z2h0IGJ5IHRoZSBjYWxsZXIuIik7CisKKyAgICBsZXQgZmFpbHVyZXMgPSBbXTsK
KyAgICBsZXQgc3VjY2Vzc2VzID0gW107CisgICAgZm9yIChsZXQgdHlwZSBvZiB0eXBlcykgewor
ICAgICAgICBsZXQgb3ZlcmxvYWQgPSBpbmZlclR5cGVzRm9yVHlwZUFyZ3VtZW50cyh0eXBlLCB0
eXBlQXJndW1lbnRzKTsKKyAgICAgICAgaWYgKG92ZXJsb2FkLmZhaWx1cmUpCisgICAgICAgICAg
ICBmYWlsdXJlcy5wdXNoKG92ZXJsb2FkLmZhaWx1cmUpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBzdWNjZXNzZXMucHVzaChvdmVybG9hZCk7CisgICAgfQorICAgIAorICAgIGlmICghc3Vj
Y2Vzc2VzLmxlbmd0aCkKKyAgICAgICAgcmV0dXJuIHtmYWlsdXJlczogZmFpbHVyZXN9OworICAg
IAorICAgIGlmIChzdWNjZXNzZXMubGVuZ3RoID09IDEpCisgICAgICAgIHJldHVybiBzdWNjZXNz
ZXNbMF07CisgICAgCisgICAgbGV0IG1lc3NhZ2UgPSAiQW1iaWd1b3VzIG92ZXJsb2FkIC0gdHlw
ZXMgbXV0dWFsbHkgYXBwbGljYWJsZSI7CisgICAgcmV0dXJuIHtmYWlsdXJlczogc3VjY2Vzc2Vz
Lm1hcChvdmVybG9hZCA9PiBuZXcgVHlwZU92ZXJsb2FkUmVzb2x1dGlvbkZhaWx1cmUob3Zlcmxv
YWQudHlwZSwgbWVzc2FnZSkpfTsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL1Jlc29sdmVUeXBlRGVmcy5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL1Jlc29sdmVUeXBlRGVmcy5qcwppbmRleCA5MTQzZjhlMWUwMGEwNDk4MTRiOTBhMzQ1YzVh
ZjQ1MTQ1OWQ4NTc0Li4wNTc0YmVjZDU1MzE1MDk0NzhhMmRlZmRjMmZlN2M2OGU2MWMzZDM1IDEw
MDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXNvbHZlVHlwZURlZnMu
anMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmVzb2x2ZVR5cGVEZWZzLmpz
CkBAIC0yNyw4ICsyNywxMyBAQAogZnVuY3Rpb24gcmVzb2x2ZVR5cGVEZWZzSW5UeXBlcyhwcm9n
cmFtKQogewogICAgIGxldCByZXNvbHZlciA9IG5ldyBUeXBlRGVmUmVzb2x2ZXIoKTsKLSAgICBm
b3IgKGxldCB0eXBlIG9mIHByb2dyYW0udHlwZXMudmFsdWVzKCkpCi0gICAgICAgIHR5cGUudmlz
aXQocmVzb2x2ZXIpOworICAgIGZvciAobGV0IHR5cGUgb2YgcHJvZ3JhbS50eXBlcy52YWx1ZXMo
KSkgeworICAgICAgICBpZiAodHlwZSBpbnN0YW5jZW9mIEFycmF5KSB7CisgICAgICAgICAgICBm
b3IgKGxldCBjb25zdGl0dWVudFR5cGUgb2YgdHlwZSkKKyAgICAgICAgICAgICAgICBjb25zdGl0
dWVudFR5cGUudmlzaXQocmVzb2x2ZXIpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHR5
cGUudmlzaXQocmVzb2x2ZXIpOworICAgIH0KIH0KIAogZnVuY3Rpb24gcmVzb2x2ZVR5cGVEZWZz
SW5GdW5jdGlvbnMocHJvZ3JhbSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL1Jld3JpdGVyLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmV3cml0
ZXIuanMKaW5kZXggZDU0N2QyMDNmMGRiZjhjYWJlZTQzNzc4MDNiZDViMDg0ZTk4MDdiYy4uYTFi
NjAxNWIzNjQwNjJkMWY4NDE2M2FlYTA4MTI4MzAxNGYyNjZjNyAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmV3cml0ZXIuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvUmV3cml0ZXIuanMKQEAgLTk3LDcgKzk3LDkgQEAgY2xhc3MgUmV3cml0
ZXIgewogICAgIAogICAgIHZpc2l0VHlwZVJlZihub2RlKQogICAgIHsKLSAgICAgICAgbGV0IHJl
c3VsdCA9IG5ldyBUeXBlUmVmKG5vZGUub3JpZ2luLCBub2RlLm5hbWUpOworICAgICAgICBsZXQg
cmVzdWx0ID0gbmV3IFR5cGVSZWYobm9kZS5vcmlnaW4sIG5vZGUubmFtZSwgbm9kZS50eXBlQXJn
dW1lbnRzLm1hcChhcmd1bWVudCA9PiBhcmd1bWVudC52aXNpdCh0aGlzKSkpOworICAgICAgICBp
ZiAobm9kZS5wb3NzaWJsZU92ZXJsb2FkcykKKyAgICAgICAgICAgIHJlc3VsdC5wb3NzaWJsZU92
ZXJsb2FkcyA9IG5vZGUucG9zc2libGVPdmVybG9hZHMubWFwKG92ZXJsb2FkID0+IE5vZGUudmlz
aXQob3ZlcmxvYWQsIHRoaXMpKTsKICAgICAgICAgaWYgKG5vZGUudHlwZSkKICAgICAgICAgICAg
IHJlc3VsdC50eXBlID0gTm9kZS52aXNpdChub2RlLnR5cGUsIHRoaXMpOwogICAgICAgICByZXR1
cm4gcmVzdWx0OwpAQCAtMzgyLDcgKzM4NCw3IEBAIGNsYXNzIFJld3JpdGVyIHsKIAogICAgIHZp
c2l0VmVjdG9yVHlwZShub2RlKQogICAgIHsKLSAgICAgICAgY29uc3QgdmVjVHlwZSA9IG5ldyBW
ZWN0b3JUeXBlKG5vZGUub3JpZ2luLCBub2RlLm5hbWUpOworICAgICAgICBjb25zdCB2ZWNUeXBl
ID0gbmV3IFZlY3RvclR5cGUobm9kZS5vcmlnaW4sIG5vZGUubmFtZSwgbm9kZS50eXBlQXJndW1l
bnRzLm1hcChhcmd1bWVudCA9PiBhcmd1bWVudC52aXNpdCh0aGlzKSkpOwogICAgICAgICB2ZWNU
eXBlLl9lbGVtZW50VHlwZSA9IG5vZGUuZWxlbWVudFR5cGUudmlzaXQodGhpcyk7CiAgICAgICAg
IHJldHVybiB2ZWNUeXBlOwogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL1NQSVJWLmh0bWwgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TUElS
Vi5odG1sCmluZGV4IGM3YjM5NDBmMmIxMWJkODk2MTRmMTRhOWI1MmM0N2E1NjE2NmFiMTQuLjIw
YmU3Yzg0YzlhZjk3MGYxM2QxNTRlMmU0NGNkMzQ5ZGIzYzc0ODEgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1NQSVJWLmh0bWwKKysrIGIvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvU1BJUlYuaHRtbApAQCAtNDMsNiArNDMsNyBAQCB0ZCB7CiAgICAgPHNj
cmlwdCBzcmM9IkNoZWNrUmVjdXJzaW9uLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0i
Q2hlY2tSZWN1cnNpdmVUeXBlcy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNoZWNr
UmV0dXJucy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IkNoZWNrVHlwZXNXaXRoQXJn
dW1lbnRzLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ2hlY2tVbnJlYWNoYWJsZUNv
ZGUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDaGVja1dyYXBwZWQuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgc3JjPSJDaGVja2VyLmpzIj48L3NjcmlwdD4KQEAgLTExNiw3ICsx
MTcsNiBAQCB0ZCB7CiAgICAgPHNjcmlwdCBzcmM9IlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24u
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJSZWN1cnNpb25DaGVja2VyLmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iUmVjdXJzaXZlVHlwZUNoZWNrZXIuanMiPjwvc2NyaXB0
PgotICAgIDxzY3JpcHQgc3JjPSJSZW1vdmVUeXBlQXJndW1lbnRzLmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHNyYz0iUmVzb2x2ZU5hbWVzLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iUmVzb2x2ZU92ZXJsb2FkSW1wbC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlJl
c29sdmVQcm9wZXJ0aWVzLmpzIj48L3NjcmlwdD4KQEAgLTE0MCw2ICsxNDAsNyBAQCB0ZCB7CiAg
ICAgPHNjcmlwdCBzcmM9IlR5cGVEZWYuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJU
eXBlRGVmUmVzb2x2ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJUeXBlUmVmLmpz
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVHlwZU92ZXJsb2FkUmVzb2x1dGlvbkZhaWx1
cmUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJUeXBlZFZhbHVlLmpzIj48L3Njcmlw
dD4KICAgICA8c2NyaXB0IHNyYz0iVWludExpdGVyYWwuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgc3JjPSJVaW50TGl0ZXJhbFR5cGUuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhbmRhcmRMaWJyYXJ5LmpzIGIvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvU3RhbmRhcmRMaWJyYXJ5LmpzCmluZGV4IDA2YjI1MWNmMGEyNDgx
OWNhYjUwNjVlZjU0NDVlMTQ4OWQ1ZWFhZmMuLjgxOTBhNDM1NjkyM2E2MWU1NDg1YmRkNGYxODBk
MTM4Mzc3NDg5OGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0
YW5kYXJkTGlicmFyeS5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TdGFu
ZGFyZExpYnJhcnkuanMKQEAgLTMzLDE3ICszMyw3MCBAQCBsZXQgc3RhbmRhcmRMaWJyYXJ5ID0g
YAogbmF0aXZlIHR5cGVkZWYgdm9pZDsKIG5hdGl2ZSB0eXBlZGVmIGJvb2w7CiBuYXRpdmUgdHlw
ZWRlZiB1Y2hhcjsKK25hdGl2ZSB0eXBlZGVmIHVzaG9ydDsKIG5hdGl2ZSB0eXBlZGVmIHVpbnQ7
CituYXRpdmUgdHlwZWRlZiBjaGFyOworbmF0aXZlIHR5cGVkZWYgc2hvcnQ7CiBuYXRpdmUgdHlw
ZWRlZiBpbnQ7CituYXRpdmUgdHlwZWRlZiBoYWxmOwogbmF0aXZlIHR5cGVkZWYgZmxvYXQ7Ci0K
LS8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgdGhlc2UgdHlwZXMgdG8gSW50cmluc2ljcy5qcwot
Ly8gbmF0aXZlIHR5cGVkZWYgdXNob3J0OwotLy8gbmF0aXZlIHR5cGVkZWYgY2hhcjsKLS8vIG5h
dGl2ZSB0eXBlZGVmIHNob3J0OwotLy8gbmF0aXZlIHR5cGVkZWYgaGFsZjsKLS8vIG5hdGl2ZSB0
eXBlZGVmIGF0b21pY19pbnQ7Ci0vLyBuYXRpdmUgdHlwZWRlZiBhdG9taWNfdWludDsKK25hdGl2
ZSB0eXBlZGVmIGF0b21pY19pbnQ7CituYXRpdmUgdHlwZWRlZiBhdG9taWNfdWludDsKKworbmF0
aXZlIHR5cGVkZWYgdmVjdG9yPGJvb2wsIDI+OwordHlwZWRlZiBib29sMiA9IHZlY3Rvcjxib29s
LCAyPjsKK25hdGl2ZSB0eXBlZGVmIHZlY3Rvcjxib29sLCAzPjsKK3R5cGVkZWYgYm9vbDMgPSB2
ZWN0b3I8Ym9vbCwgMz47CituYXRpdmUgdHlwZWRlZiB2ZWN0b3I8Ym9vbCwgND47Cit0eXBlZGVm
IGJvb2w0ID0gdmVjdG9yPGJvb2wsIDQ+OworbmF0aXZlIHR5cGVkZWYgdmVjdG9yPHVjaGFyLCAy
PjsKK3R5cGVkZWYgdWNoYXIyID0gdmVjdG9yPHVjaGFyLCAyPjsKK25hdGl2ZSB0eXBlZGVmIHZl
Y3Rvcjx1Y2hhciwgMz47Cit0eXBlZGVmIHVjaGFyMyA9IHZlY3Rvcjx1Y2hhciwgMz47CituYXRp
dmUgdHlwZWRlZiB2ZWN0b3I8dWNoYXIsIDQ+OwordHlwZWRlZiB1Y2hhcjQgPSB2ZWN0b3I8dWNo
YXIsIDQ+OworbmF0aXZlIHR5cGVkZWYgdmVjdG9yPHVzaG9ydCwgMj47Cit0eXBlZGVmIHVzaG9y
dDIgPSB2ZWN0b3I8dXNob3J0LCAyPjsKK25hdGl2ZSB0eXBlZGVmIHZlY3Rvcjx1c2hvcnQsIDM+
OwordHlwZWRlZiB1c2hvcnQzID0gdmVjdG9yPHVzaG9ydCwgMz47CituYXRpdmUgdHlwZWRlZiB2
ZWN0b3I8dXNob3J0LCA0PjsKK3R5cGVkZWYgdXNob3J0NCA9IHZlY3Rvcjx1c2hvcnQsIDQ+Owor
bmF0aXZlIHR5cGVkZWYgdmVjdG9yPHVpbnQsIDI+OwordHlwZWRlZiB1aW50MiA9IHZlY3Rvcjx1
aW50LCAyPjsKK25hdGl2ZSB0eXBlZGVmIHZlY3Rvcjx1aW50LCAzPjsKK3R5cGVkZWYgdWludDMg
PSB2ZWN0b3I8dWludCwgMz47CituYXRpdmUgdHlwZWRlZiB2ZWN0b3I8dWludCwgND47Cit0eXBl
ZGVmIHVpbnQ0ID0gdmVjdG9yPHVpbnQsIDQ+OworbmF0aXZlIHR5cGVkZWYgdmVjdG9yPGNoYXIs
IDI+OwordHlwZWRlZiBjaGFyMiA9IHZlY3RvcjxjaGFyLCAyPjsKK25hdGl2ZSB0eXBlZGVmIHZl
Y3RvcjxjaGFyLCAzPjsKK3R5cGVkZWYgY2hhcjMgPSB2ZWN0b3I8Y2hhciwgMz47CituYXRpdmUg
dHlwZWRlZiB2ZWN0b3I8Y2hhciwgND47Cit0eXBlZGVmIGNoYXI0ID0gdmVjdG9yPGNoYXIsIDQ+
OworbmF0aXZlIHR5cGVkZWYgdmVjdG9yPHNob3J0LCAyPjsKK3R5cGVkZWYgc2hvcnQyID0gdmVj
dG9yPHNob3J0LCAyPjsKK25hdGl2ZSB0eXBlZGVmIHZlY3RvcjxzaG9ydCwgMz47Cit0eXBlZGVm
IHNob3J0MyA9IHZlY3RvcjxzaG9ydCwgMz47CituYXRpdmUgdHlwZWRlZiB2ZWN0b3I8c2hvcnQs
IDQ+OwordHlwZWRlZiBzaG9ydDQgPSB2ZWN0b3I8c2hvcnQsIDQ+OworbmF0aXZlIHR5cGVkZWYg
dmVjdG9yPGludCwgMj47Cit0eXBlZGVmIGludDIgPSB2ZWN0b3I8aW50LCAyPjsKK25hdGl2ZSB0
eXBlZGVmIHZlY3RvcjxpbnQsIDM+OwordHlwZWRlZiBpbnQzID0gdmVjdG9yPGludCwgMz47Citu
YXRpdmUgdHlwZWRlZiB2ZWN0b3I8aW50LCA0PjsKK3R5cGVkZWYgaW50NCA9IHZlY3RvcjxpbnQs
IDQ+OworbmF0aXZlIHR5cGVkZWYgdmVjdG9yPGhhbGYsIDI+OwordHlwZWRlZiBoYWxmMiA9IHZl
Y3RvcjxoYWxmLCAyPjsKK25hdGl2ZSB0eXBlZGVmIHZlY3RvcjxoYWxmLCAzPjsKK3R5cGVkZWYg
aGFsZjMgPSB2ZWN0b3I8aGFsZiwgMz47CituYXRpdmUgdHlwZWRlZiB2ZWN0b3I8aGFsZiwgND47
Cit0eXBlZGVmIGhhbGY0ID0gdmVjdG9yPGhhbGYsIDQ+OworbmF0aXZlIHR5cGVkZWYgdmVjdG9y
PGZsb2F0LCAyPjsKK3R5cGVkZWYgZmxvYXQyID0gdmVjdG9yPGZsb2F0LCAyPjsKK25hdGl2ZSB0
eXBlZGVmIHZlY3RvcjxmbG9hdCwgMz47Cit0eXBlZGVmIGZsb2F0MyA9IHZlY3RvcjxmbG9hdCwg
Mz47CituYXRpdmUgdHlwZWRlZiB2ZWN0b3I8ZmxvYXQsIDQ+OwordHlwZWRlZiBmbG9hdDQgPSB2
ZWN0b3I8ZmxvYXQsIDQ+OwogCiBuYXRpdmUgb3BlcmF0b3IgaW50KHVpbnQpOwogbmF0aXZlIG9w
ZXJhdG9yIGludCh1Y2hhcik7CkBAIC0xNDcsMjggKzIwMCwxMiBAQCBib29sIG9wZXJhdG9yfihi
b29sIHZhbHVlKQogewogICAgIHJldHVybiAhdmFsdWU7CiB9Ci0KLW5hdGl2ZSB0eXBlZGVmIHVj
aGFyMjsKLW5hdGl2ZSB0eXBlZGVmIHVjaGFyMzsKLW5hdGl2ZSB0eXBlZGVmIHVjaGFyNDsKLQot
bmF0aXZlIHR5cGVkZWYgdWludDI7Ci1uYXRpdmUgdHlwZWRlZiB1aW50MzsKLW5hdGl2ZSB0eXBl
ZGVmIHVpbnQ0OwotCi1uYXRpdmUgdHlwZWRlZiBpbnQyOwotbmF0aXZlIHR5cGVkZWYgaW50MzsK
LW5hdGl2ZSB0eXBlZGVmIGludDQ7Ci0KLW5hdGl2ZSB0eXBlZGVmIGZsb2F0MjsKLW5hdGl2ZSB0
eXBlZGVmIGZsb2F0MzsKLW5hdGl2ZSB0eXBlZGVmIGZsb2F0NDsKIGA7CiAKIC8vIEZJWE1FOiBP
bmNlIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGhhcyBiZWVuIHJlcGxhY2VkIHdpdGggYSBuZXcgdmVy
c2lvbiwgdGhpcyBjb21tZW50cyBzaG91bGQgYmUgcmVtb3ZlZC4KIC8vIFRoaXMgbGlzdCBpcyB1
c2VkIHRvIHJlc3RyaWN0IHRoZSBhdmFpbGFiaWxpdHkgb2YgdmVjdG9yIHR5cGVzIGF2YWlsYWJs
ZSBpbiB0aGUgbGFuZ2F1Z2UuCiAvLyBQZXJtaXNzaWJsZSB2ZWN0b3IgZWxlbWVudCB0eXBlcyBt
dXN0IGFwcGVhciBpbiB0aGlzIGxpc3QgYW5kIGluIHRoZSBzdGFuZGFyZCBsaWJyYXJ5Ci1jb25z
dCBWZWN0b3JFbGVtZW50VHlwZXMgPSBbIC8qImJvb2wiLCovICJ1Y2hhciIsIC8qImNoYXIiLCAi
dXNob3J0IiwgInNob3J0IiwqLyAidWludCIsICJpbnQiLCAvKiAiaGFsZiIsICovImZsb2F0IiBd
OworY29uc3QgVmVjdG9yRWxlbWVudFR5cGVzID0gWyAiYm9vbCIsICJ1Y2hhciIsICJjaGFyIiwg
InVzaG9ydCIsICJzaG9ydCIsICJ1aW50IiwgImludCIsICJoYWxmIiwgImZsb2F0IiBdOwogY29u
c3QgVmVjdG9yRWxlbWVudFNpemVzID0gWyAyLCAzLCA0IF07CiAKIGZ1bmN0aW9uIGFsbFZlY3Rv
clR5cGVOYW1lcygpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9T
dGF0ZW1lbnRDbG9uZXIuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TdGF0ZW1l
bnRDbG9uZXIuanMKaW5kZXggYjM5NDhjNDUwYzcxNjA5Nzc5NzVlZDRlOGU5OGVkOTljNGY3YTA1
OS4uMGQwNzE1YTk4NTRkZWYxYmZkMmE4MDhjNzQwNDExMmJhMWE0YTBjMSAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhdGVtZW50Q2xvbmVyLmpzCisrKyBiL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0YXRlbWVudENsb25lci5qcwpAQCAtNTAsNyAr
NTAsNyBAQCBjbGFzcyBTdGF0ZW1lbnRDbG9uZXIgZXh0ZW5kcyBSZXdyaXRlciB7CiAgICAgCiAg
ICAgdmlzaXROYXRpdmVUeXBlKG5vZGUpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IE5hdGl2
ZVR5cGUobm9kZS5vcmlnaW4sIG5vZGUubmFtZSk7CisgICAgICAgIHJldHVybiBuZXcgTmF0aXZl
VHlwZShub2RlLm9yaWdpbiwgbm9kZS5uYW1lLCBub2RlLnR5cGVBcmd1bWVudHMubWFwKGFyZ3Vt
ZW50ID0+IGFyZ3VtZW50LnZpc2l0KHRoaXMpKSk7CiAgICAgfQogICAgIAogICAgIHZpc2l0VHlw
ZURlZihub2RlKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3lu
dGhlc2l6ZURlZmF1bHRDb25zdHJ1Y3Rvck9wZXJhdG9yLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvU3ludGhlc2l6ZURlZmF1bHRDb25zdHJ1Y3Rvck9wZXJhdG9yLmpzCmluZGV4
IGZlZmU5YzAzZDdiMTBiMzExNmIzYjY3ZjJhZjA1N2YxNmZjMTUxNmMuLjNhM2Y3NjczODY3Yjlh
YWIwMTMyMjE4MDM1Njg3MzhjMTYzYTU2N2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL1N5bnRoZXNpemVEZWZhdWx0Q29uc3RydWN0b3JPcGVyYXRvci5qcworKysg
Yi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TeW50aGVzaXplRGVmYXVsdENvbnN0cnVj
dG9yT3BlcmF0b3IuanMKQEAgLTQ1LDYgKzQ1LDEyIEBAIGZ1bmN0aW9uIHN5bnRoZXNpemVEZWZh
dWx0Q29uc3RydWN0b3JPcGVyYXRvcihwcm9ncmFtKQogICAgICAgICAgICAgdHlwZXMuYWRkKG5v
ZGUpOwogICAgICAgICAgICAgc3VwZXIudmlzaXRFbGVtZW50YWxUeXBlKG5vZGUpOwogICAgICAg
ICB9CisKKyAgICAgICAgdmlzaXRWZWN0b3JUeXBlKG5vZGUpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHR5cGVzLmFkZChub2RlKTsKKyAgICAgICAgICAgIHN1cGVyLnZpc2l0VmVjdG9yVHlwZShu
b2RlKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHByb2dyYW0udmlzaXQobmV3IEZpbmRBbGxU
eXBlcygpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N5bnRo
ZXNpemVTdHJ1Y3RBY2Nlc3NvcnMuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9T
eW50aGVzaXplU3RydWN0QWNjZXNzb3JzLmpzCmluZGV4IGJmZTYwNDQ5NGRjNzI1YWU3ZTc0YWQ0
YTBiZmUyM2U5M2MwOTE3NzYuLmEwMTgxNDY4YTI1ZWQ0YzA5MDUwZDdiZjFkNjFmNDRlZDNhMGFh
NjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N5bnRoZXNpemVT
dHJ1Y3RBY2Nlc3NvcnMuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3lu
dGhlc2l6ZVN0cnVjdEFjY2Vzc29ycy5qcwpAQCAtNTEsNyArNTEsNyBAQCBmdW5jdGlvbiBzeW50
aGVzaXplU3RydWN0QWNjZXNzb3JzKHByb2dyYW0pCiAgICAgICAgICAgICAKICAgICAgICAgICAg
IGZ1bmN0aW9uIGNyZWF0ZVR5cGVSZWYoKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IHJldHVybiBUeXBlUmVmLmluc3RhbnRpYXRlKHR5cGUpOworICAgICAgICAgICAgICAgIHJldHVy
biBUeXBlUmVmLndyYXAodHlwZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIGxldCBpc0Nhc3QgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL1Rlc3QuaHRtbCBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rl
c3QuaHRtbAppbmRleCAxM2YzNTgyMzk5MjlkOGEzZTZhY2U1MjU0NWI5MWNhNTJkNjA2MGU0Li4w
ZGU2OTQxZDU5MDJmMGRjY2Y0ODhjOTQ1MTU1YzFmYTNhYjViYjljIDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0bWwKKysrIGIvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvVGVzdC5odG1sCkBAIC0zNyw2ICszNyw3IEBACiA8c2NyaXB0IHNyYz0i
Q2hlY2tSZWN1cnNpb24uanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkNoZWNrUmVjdXJzaXZl
VHlwZXMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkNoZWNrUmV0dXJucy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iQ2hlY2tUeXBlc1dpdGhBcmd1bWVudHMuanMiPjwvc2NyaXB0Pgog
PHNjcmlwdCBzcmM9IkNoZWNrVW5yZWFjaGFibGVDb2RlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQg
c3JjPSJDaGVja1dyYXBwZWQuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkNoZWNrZXIuanMi
Pjwvc2NyaXB0PgpAQCAtMTEwLDcgKzExMSw2IEBACiA8c2NyaXB0IHNyYz0iUmVhZE1vZGlmeVdy
aXRlRXhwcmVzc2lvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iUmVjdXJzaW9uQ2hlY2tl
ci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iUmVjdXJzaXZlVHlwZUNoZWNrZXIuanMiPjwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9IlJlbW92ZVR5cGVBcmd1bWVudHMuanMiPjwvc2NyaXB0Pgog
PHNjcmlwdCBzcmM9IlJlc29sdmVOYW1lcy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iUmVz
b2x2ZU92ZXJsb2FkSW1wbC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iUmVzb2x2ZVByb3Bl
cnRpZXMuanMiPjwvc2NyaXB0PgpAQCAtMTM0LDYgKzEzNCw3IEBACiA8c2NyaXB0IHNyYz0iVHlw
ZURlZi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iVHlwZURlZlJlc29sdmVyLmpzIj48L3Nj
cmlwdD4KIDxzY3JpcHQgc3JjPSJUeXBlUmVmLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJU
eXBlT3ZlcmxvYWRSZXNvbHV0aW9uRmFpbHVyZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0i
VHlwZWRWYWx1ZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iVWludExpdGVyYWwuanMiPjwv
c2NyaXB0PgogPHNjcmlwdCBzcmM9IlVpbnRMaXRlcmFsVHlwZS5qcyI+PC9zY3JpcHQ+CmRpZmYg
LS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0LmpzIGIvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5qcwppbmRleCBkZjQxN2RhYmY2ZDg3MTM1ZTczNWNh
OGM5YjFiZjEzYWI2NDA3NWExLi5iZmZiY2YwYjJjYjZkY2IyNTdmMWZjMzk5MmU4ZWM2NTM0NDU2
ZDljIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0LmpzCisr
KyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuanMKQEAgLTI4ODEsNyArMjg4
MSw3IEBAIHRlc3RzLnNoYWRlclR5cGVzID0gZnVuY3Rpb24oKQogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgZnJhZ21lbnQgQm9vIGJhcihGb28gc3RhZ2VJbikKICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gYm9vKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEJvbygp
OwogICAgICAgICAgICAgfQogICAgICAgICBgKSwKICAgICAgICAgKGUpID0+IGUgaW5zdGFuY2Vv
ZiBXVHlwZUVycm9yKTsKQEAgLTI5MDQsNyArMjkwNCw3IEBAIHRlc3RzLnNoYWRlclR5cGVzID0g
ZnVuY3Rpb24oKQogCiB0ZXN0cy52ZWN0b3JUeXBlU3ludGF4ID0gZnVuY3Rpb24oKQogewotICAg
IGNvbnN0IHByb2dyYW0gPSBkb1ByZXAoYAorICAgIGxldCBwcm9ncmFtID0gZG9QcmVwKGAKICAg
ICAgICAgaW50IGZvbzIoKQogICAgICAgICB7CiAgICAgICAgICAgICBpbnQyIHg7CkBAIC0yOTM5
LDcgKzI5MzksMjYgQEAgdGVzdHMudmVjdG9yVHlwZVN5bnRheCA9IGZ1bmN0aW9uKCkKICAgICBj
aGVja0ludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbzIiLCBbXSksIDQpOwog
ICAgIGNoZWNrSW50KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vMyIsIFtdKSwg
NSk7CiAgICAgY2hlY2tJbnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb280Iiwg
W10pLCA2KTsKKyAgICBjaGVja0Jvb2wocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJ2
ZWMyT3BlcmF0b3JDYXN0IiwgW10pLCB0cnVlKTsKKworICAgIHByb2dyYW0gPSBkb1ByZXAoYAor
ICAgICAgICB0eXBlZGVmIGkgPSBpbnQ7CisgICAgICAgIGludCBmb28yKCkKKyAgICAgICAgewor
ICAgICAgICAgICAgaW50MiB4OworICAgICAgICAgICAgdmVjdG9yPGksIDI+IHogPSBpbnQyKDMs
IDQpOworICAgICAgICAgICAgeCA9IHo7CisgICAgICAgICAgICByZXR1cm4geC55OworICAgICAg
ICB9CisKKyAgICAgICAgYm9vbCB2ZWMyT3BlcmF0b3JDYXN0KCkKKyAgICAgICAgeworICAgICAg
ICAgICAgaW50MiB4ID0gdmVjdG9yPGksMj4oMSwgMik7CisgICAgICAgICAgICB2ZWN0b3I8aSwg
Mj4geSA9IGludDIoMSwgMik7CisgICAgICAgICAgICByZXR1cm4geCA9PSB5ICYmIHgueCA9PSAx
ICYmIHgueSA9PSAyICYmIHkueCA9PSAxICYmIHkueSA9PSAyOworICAgICAgICB9YCk7CiAKKyAg
ICBjaGVja0ludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbzIiLCBbXSksIDQp
OwogICAgIGNoZWNrQm9vbChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgInZlYzJPcGVy
YXRvckNhc3QiLCBbXSksIHRydWUpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9UeXBlT3ZlcmxvYWRSZXNvbHV0aW9uRmFpbHVyZS5qcyBiL1Rvb2xzL1dl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL1R5cGVPdmVybG9hZFJlc29sdXRpb25GYWlsdXJlLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmQ1Y2IzZjcxMGZhMGNlMDNkMjkwMmZhMzJlZDhiMDI3NWZiNjI2MDgKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UeXBlT3ZlcmxvYWRS
ZXNvbHV0aW9uRmFpbHVyZS5qcwpAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisidXNlIHN0cmljdCI7CisKK2NsYXNzIFR5cGVPdmVy
bG9hZFJlc29sdXRpb25GYWlsdXJlIHsKKyAgICBjb25zdHJ1Y3Rvcih0eXBlLCByZWFzb24pCisg
ICAgeworICAgICAgICB0aGlzLl90eXBlID0gdHlwZTsKKyAgICAgICAgdGhpcy5fcmVhc29uID0g
cmVhc29uOworICAgIH0KKyAgICAKKyAgICBnZXQgdHlwZSgpIHsgcmV0dXJuIHRoaXMuX3R5cGU7
IH0KKyAgICBnZXQgcmVhc29uKCkgeyByZXR1cm4gdGhpcy5fcmVhc29uOyB9CisgICAgCisgICAg
dG9TdHJpbmcoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMudHlwZS50b1N0cmluZygpICsg
IiBkaWQgbm90IG1hdGNoIGJlY2F1c2U6ICIgKyB0aGlzLnJlYXNvbjsKKyAgICB9Cit9CisKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1R5cGVSZWYuanMgYi9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UeXBlUmVmLmpzCmluZGV4IGI1ZjNjMGIzZDkyNTMy
ZTA1YzY4MDA1NGExNjFmMDVlMGRkZDY0NmIuLjhiNjRlNjdiOWY1Zjc0MTUyNTJjYjI0YzkyZWVi
OWY0ODQ2YmRiZjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1R5
cGVSZWYuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVHlwZVJlZi5qcwpA
QCAtMjUsMTIgKzI1LDEzIEBACiAidXNlIHN0cmljdCI7CiAKIGNsYXNzIFR5cGVSZWYgZXh0ZW5k
cyBUeXBlIHsKLSAgICBjb25zdHJ1Y3RvcihvcmlnaW4sIG5hbWUsIHR5cGVBcmd1bWVudHMgPSBu
dWxsKQorICAgIGNvbnN0cnVjdG9yKG9yaWdpbiwgbmFtZSwgdHlwZUFyZ3VtZW50cyA9IFtdKQog
ICAgIHsKICAgICAgICAgc3VwZXIoKTsKICAgICAgICAgdGhpcy5fb3JpZ2luID0gb3JpZ2luOwog
ICAgICAgICB0aGlzLl9uYW1lID0gbmFtZTsKICAgICAgICAgdGhpcy5fdHlwZSA9IG51bGw7Cisg
ICAgICAgIHRoaXMuX3Bvc3NpYmxlT3ZlcmxvYWRzID0gbnVsbDsKICAgICAgICAgdGhpcy5fdHlw
ZUFyZ3VtZW50cyA9IHR5cGVBcmd1bWVudHM7CiAgICAgfQogICAgIApAQCAtMzgsMTQgKzM5LDEx
IEBAIGNsYXNzIFR5cGVSZWYgZXh0ZW5kcyBUeXBlIHsKICAgICB7CiAgICAgICAgIGlmICh0eXBl
IGluc3RhbmNlb2YgVHlwZVJlZikKICAgICAgICAgICAgIHJldHVybiB0eXBlOwotICAgICAgICBs
ZXQgcmVzdWx0ID0gbmV3IFR5cGVSZWYodHlwZS5vcmlnaW4sIHR5cGUubmFtZSk7Ci0gICAgICAg
IHJlc3VsdC50eXBlID0gdHlwZTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0gICAg
Ci0gICAgc3RhdGljIGluc3RhbnRpYXRlKHR5cGUpCi0gICAgewotICAgICAgICBsZXQgcmVzdWx0
ID0gbmV3IFR5cGVSZWYodHlwZS5vcmlnaW4sIHR5cGUubmFtZSk7CisgICAgICAgIGxldCByZXN1
bHQ7CisgICAgICAgIGlmICh0eXBlIGluc3RhbmNlb2YgTmF0aXZlVHlwZSkKKyAgICAgICAgICAg
IHJlc3VsdCA9IG5ldyBUeXBlUmVmKHR5cGUub3JpZ2luLCB0eXBlLm5hbWUsIHR5cGUudHlwZUFy
Z3VtZW50cyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlc3VsdCA9IG5ldyBUeXBlUmVm
KHR5cGUub3JnaW4sIHR5cGUubmFtZSk7CiAgICAgICAgIHJlc3VsdC50eXBlID0gdHlwZTsKICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC02Myw2ICs2MSw1MSBAQCBjbGFzcyBUeXBl
UmVmIGV4dGVuZHMgVHlwZSB7CiAgICAgewogICAgICAgICB0aGlzLl90eXBlID0gbmV3VHlwZTsK
ICAgICB9CisgICAgCisgICAgZ2V0IHBvc3NpYmxlT3ZlcmxvYWRzKCkKKyAgICB7CisgICAgICAg
IHJldHVybiB0aGlzLl9wb3NzaWJsZU92ZXJsb2FkczsKKyAgICB9CisKKyAgICBzZXQgcG9zc2li
bGVPdmVybG9hZHMobmV3T3ZlcmxvYWRzKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMudHlwZSkK
KyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiVHlwZVJlZnMgd2l0aCBrbm93biB0eXBlIHNo
b3VsZCBub3QgaGF2ZSBvdmVybG9hZHMuIik7CisgICAgICAgIHRoaXMuX3Bvc3NpYmxlT3Zlcmxv
YWRzID0gbmV3T3ZlcmxvYWRzOworICAgIH0KKworICAgIHJlc29sdmUocG9zc2libGVPdmVybG9h
ZHMsIHByb2dyYW0pCisgICAgeworICAgICAgICBpZiAoIXBvc3NpYmxlT3ZlcmxvYWRzKQorICAg
ICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3IodGhpcy5vcmlnaW4ub3JpZ2luU3RyaW5nLCAi
RGlkIG5vdCBmaW5kIGFueSB0eXBlcyBuYW1lZCAiICsgdGhpcy5uYW1lKTsKKworICAgICAgICBs
ZXQgZmFpbHVyZXMgPSBbXTsKKyAgICAgICAgbGV0IG92ZXJsb2FkID0gcmVzb2x2ZVR5cGVPdmVy
bG9hZEltcGwocG9zc2libGVPdmVybG9hZHMsIHRoaXMudHlwZUFyZ3VtZW50cyk7CisKKyAgICAg
ICAgaWYgKCFvdmVybG9hZC50eXBlKSB7CisgICAgICAgICAgICBmYWlsdXJlcy5wdXNoKC4uLm92
ZXJsb2FkLmZhaWx1cmVzKTsKKyAgICAgICAgICAgIGxldCBtZXNzYWdlID0gIkRpZCBub3QgZmlu
ZCB0eXBlIG5hbWVkICIgKyB0aGlzLm5hbWUgKyAiIGZvciB0eXBlIGFyZ3VtZW50cyAiOworICAg
ICAgICAgICAgbWVzc2FnZSArPSAiKCIgKyB0aGlzLnR5cGVBcmd1bWVudHMgKyAiKSI7CisgICAg
ICAgICAgICBpZiAoZmFpbHVyZXMubGVuZ3RoKQorICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0g
IiwgYnV0IGNvbnNpZGVyZWQ6XG4iICsgZmFpbHVyZXMuam9pbigiXG4iKQorICAgICAgICAgICAg
dGhyb3cgbmV3IFdUeXBlRXJyb3IodGhpcy5vcmlnaW4ub3JpZ2luU3RyaW5nLCBtZXNzYWdlKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy50eXBlQXJndW1l
bnRzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBsZXQgdHlwZUFyZ3VtZW50ID0gdGhpcy50
eXBlQXJndW1lbnRzW2ldOworICAgICAgICAgICAgbGV0IHJlc29sdmVkVHlwZUFyZ3VtZW50ID0g
b3ZlcmxvYWQudHlwZS50eXBlQXJndW1lbnRzW2ldOworICAgICAgICAgICAgbGV0IHJlc3VsdCA9
IHR5cGVBcmd1bWVudC5lcXVhbHNXaXRoQ29tbWl0KHJlc29sdmVkVHlwZUFyZ3VtZW50KTsKKyAg
ICAgICAgICAgIGlmICghcmVzdWx0KQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigi
QXQgIiArIHRoaXMub3JpZ2luLm9yaWdpblN0cmluZyArICIgYXJndW1lbnQgdHlwZXMgZm9yIFR5
cGUgYW5kIFR5cGVSZWYgbm90IGVxdWFsOiBhcmd1bWVudCB0eXBlID0gIiArIHR5cGVBcmd1bWVu
dCArICIsIHJlc29sdmVkIHR5cGUgYXJndW1lbnQgPSAiICsgcmVzb2x2ZWRUeXBlQXJndW1lbnQp
OworICAgICAgICAgICAgaWYgKHJlc29sdmVkVHlwZUFyZ3VtZW50LmNvbnN0cnVjdG9yLm5hbWUg
PT0gIkdlbmVyaWNMaXRlcmFsIikgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9IHR5cGVBcmd1
bWVudC50eXBlLmVxdWFsc1dpdGhDb21taXQocmVzb2x2ZWRUeXBlQXJndW1lbnQudHlwZSk7Cisg
ICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpCisgICAgICAgICAgICAgICAgICAgIHRocm93IG5l
dyBFcnJvcigiQXQgIiArIHRoaXMub3JpZ2luLm9yaWdpblN0cmluZyArICIgYXJndW1lbnQgdHlw
ZXMgZm9yIFR5cGUgYW5kIFR5cGVSZWYgbm90IGVxdWFsOiBhcmd1bWVudCB0eXBlID0gIiArIHR5
cGVBcmd1bWVudCArICIsIHJlc29sdmVkIHR5cGUgYXJndW1lbnQgPSAiICsgcmVzb2x2ZWRUeXBl
QXJndW1lbnQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICB9Cisg
ICAgICAgIHRoaXMudHlwZSA9IG92ZXJsb2FkLnR5cGU7CisgICAgfQogCiAgICAgZ2V0IHVuaWZ5
Tm9kZSgpCiAgICAgewpAQCAtOTksNyArMTQyLDEwIEBAIGNsYXNzIFR5cGVSZWYgZXh0ZW5kcyBU
eXBlIHsKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5uYW1lKQogICAgICAgICAgICAgcmV0dXJu
IHRoaXMudHlwZS50b1N0cmluZygpOwotICAgICAgICByZXR1cm4gdGhpcy5uYW1lOworICAgICAg
ICBsZXQgcmVzdWx0ID0gdGhpcy5uYW1lOworICAgICAgICBpZiAodGhpcy50eXBlQXJndW1lbnRz
Lmxlbmd0aCA+IDApCisgICAgICAgICAgICByZXN1bHQgKz0gIjwiICsgdGhpcy50eXBlQXJndW1l
bnRzLm1hcChhcmd1bWVudCA9PiBhcmd1bWVudC50b1N0cmluZygpKS5qb2luKCIsIikgKyAiPiI7
CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9VbmlmaWNhdGlvbkNvbnRleHQuanMgYi9Ub29scy9XZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9VbmlmaWNhdGlvbkNvbnRleHQuanMKaW5kZXggMmY3MTU0N2Iw
YWZiZTE4MDM3OGYzNzk5NjIzMTg2MmEyYjkxYTgyZS4uMzgxOTE2OTcyMjNlZjcyMWE1Mzc5MTRi
MzY5ODk3Njc4MWZlNmU2ZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvVW5pZmljYXRpb25Db250ZXh0LmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL1VuaWZpY2F0aW9uQ29udGV4dC5qcwpAQCAtOTIsNiArOTIsMTkgQEAgY2xhc3MgVW5pZmlj
YXRpb25Db250ZXh0IHsKICAgICAKICAgICB2ZXJpZnkoKQogICAgIHsKKyAgICAgICAgLy8gV2Ug
ZG8gYSB0d28tcGhhc2UgcHJlLXZlcmlmaWNhdGlvbi4gVGhpcyBnaXZlcyBsaXRlcmFscyBhIGNo
YW5jZSB0byBzZWxlY3QgYSBtb3JlIHNwZWNpZmljIHR5cGUuCisgICAgICAgIGxldCBwcmVwYXJh
dGlvbnMgPSBbXTsKKyAgICAgICAgZm9yIChsZXQgbm9kZSBvZiB0aGlzLm5vZGVzKSB7CisgICAg
ICAgICAgICBsZXQgcHJlcGFyYXRpb24gPSBub2RlLnByZXBhcmVUb1ZlcmlmeSh0aGlzKTsKKyAg
ICAgICAgICAgIGlmIChwcmVwYXJhdGlvbikKKyAgICAgICAgICAgICAgICBwcmVwYXJhdGlvbnMu
cHVzaChwcmVwYXJhdGlvbik7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChsZXQgcHJlcGFyYXRp
b24gb2YgcHJlcGFyYXRpb25zKSB7CisgICAgICAgICAgICBsZXQgcmVzdWx0ID0gcHJlcGFyYXRp
b24oKTsKKyAgICAgICAgICAgIGlmICghcmVzdWx0LnJlc3VsdCkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgICAgICB9CisKICAgICAgICAgZm9yIChsZXQgdHlwZUFyZ3VtZW50
IG9mIHRoaXMudHlwZUFyZ3VtZW50cygpKSB7CiAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gdHlw
ZUFyZ3VtZW50LnZlcmlmeUFzQXJndW1lbnQodGhpcyk7CiAgICAgICAgICAgICBpZiAoIXJlc3Vs
dC5yZXN1bHQpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9WZWN0
b3JUeXBlLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVmVjdG9yVHlwZS5qcwpp
bmRleCA1MDE0YzY3MWEwNzg4MjAwMmMyMzRiYjMyZjE3Yzg4NjBlZmZjMWM2Li5kZjBjYmMyYzcz
MDhmNDU0MTNjYmNjMjhkODk2MjFiYzAzYWIyNjA0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9WZWN0b3JUeXBlLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL1ZlY3RvclR5cGUuanMKQEAgLTI1LDE5ICsyNSwxNCBAQAogInVzZSBzdHJpY3Qi
OwogCiBjbGFzcyBWZWN0b3JUeXBlIGV4dGVuZHMgTmF0aXZlVHlwZSB7Ci0gICAgY29uc3RydWN0
b3Iob3JpZ2luLCBuYW1lKQorICAgIGNvbnN0cnVjdG9yKG9yaWdpbiwgbmFtZSwgdHlwZUFyZ3Vt
ZW50cykKICAgICB7Ci0gICAgICAgIHN1cGVyKG9yaWdpbiwgbmFtZSk7Ci0gICAgICAgIGNvbnN0
IG1hdGNoID0gL14oW0Etel0rKShbMC05XSkkLy5leGVjKG5hbWUpOwotICAgICAgICBpZiAoIW1h
dGNoKQotICAgICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3Iob3JpZ2luLm9yaWdpblN0cmlu
ZywgYCR7bmFtZX0gZG9lc24ndCBtYXRjaCB0aGUgZm9ybWF0IGZvciB2ZWN0b3IgdHlwZSBuYW1l
cy4nYCk7Ci0KLSAgICAgICAgdGhpcy5fZWxlbWVudFR5cGUgPSBuZXcgVHlwZVJlZihvcmlnaW4s
IG1hdGNoWzFdKTsKLSAgICAgICAgdGhpcy5fbnVtRWxlbWVudHNWYWx1ZSA9IHBhcnNlSW50KG1h
dGNoWzJdKTsKKyAgICAgICAgc3VwZXIob3JpZ2luLCBuYW1lLCB0eXBlQXJndW1lbnRzKTsKICAg
ICB9CiAKLSAgICBnZXQgZWxlbWVudFR5cGUoKSB7IHJldHVybiB0aGlzLl9lbGVtZW50VHlwZTsg
fQotICAgIGdldCBudW1FbGVtZW50c1ZhbHVlKCkgeyByZXR1cm4gdGhpcy5fbnVtRWxlbWVudHNW
YWx1ZTsgfQorICAgIGdldCBlbGVtZW50VHlwZSgpIHsgcmV0dXJuIHRoaXMudHlwZUFyZ3VtZW50
c1swXTsgfQorICAgIGdldCBudW1FbGVtZW50cygpIHsgcmV0dXJuIHRoaXMudHlwZUFyZ3VtZW50
c1sxXTsgfQorICAgIGdldCBudW1FbGVtZW50c1ZhbHVlKCkgeyByZXR1cm4gdGhpcy5udW1FbGVt
ZW50cy52YWx1ZTsgfQogICAgIGdldCBzaXplKCkgeyByZXR1cm4gdGhpcy5lbGVtZW50VHlwZS5z
aXplICogdGhpcy5udW1FbGVtZW50c1ZhbHVlOyB9CiAKICAgICB1bmlmeUltcGwodW5pZmljYXRp
b25Db250ZXh0LCBvdGhlcikKQEAgLTU5LDcgKzU0LDcgQEAgY2xhc3MgVmVjdG9yVHlwZSBleHRl
bmRzIE5hdGl2ZVR5cGUgewogCiAgICAgdG9TdHJpbmcoKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGBuYXRpdmUgdHlwZWRlZiAke3RoaXMuZWxlbWVudFR5cGV9JHt0aGlzLm51bUVsZW1lbnRzVmFs
dWV9YDsKKyAgICAgICAgcmV0dXJuIGBuYXRpdmUgdHlwZWRlZiB2ZWN0b3I8JHt0aGlzLmVsZW1l
bnRUeXBlfSwgJHt0aGlzLm51bUVsZW1lbnRzVmFsdWV9PmA7CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9WaXNpdG9yLmpzIGIvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvVmlzaXRvci5qcwppbmRleCA3ZDM4N2IyNWYyNTg5Yjg3Mzkx
OGFmMmY0NGMyNDM0YWQ2NTg3NDdmLi42MGRmY2ViZjFhZTFkNTk4ZDMyOTgwZDU2ZDc4NGYxNDUz
OGQ1NTNjIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9WaXNpdG9y
LmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Zpc2l0b3IuanMKQEAgLTY4
LDEwICs2OCwxNCBAQCBjbGFzcyBWaXNpdG9yIHsKICAgICAKICAgICB2aXNpdFR5cGVSZWYobm9k
ZSkKICAgICB7CisgICAgICAgIGZvciAobGV0IHR5cGVBcmd1bWVudCBvZiBub2RlLnR5cGVBcmd1
bWVudHMpCisgICAgICAgICAgICB0eXBlQXJndW1lbnQudmlzaXQodGhpcyk7CiAgICAgfQogICAg
IAogICAgIHZpc2l0TmF0aXZlVHlwZShub2RlKQogICAgIHsKKyAgICAgICAgZm9yIChsZXQgdHlw
ZUFyZ3VtZW50IG9mIG5vZGUudHlwZUFyZ3VtZW50cykKKyAgICAgICAgICAgIHR5cGVBcmd1bWVu
dC52aXNpdCh0aGlzKTsKICAgICB9CiAgICAgCiAgICAgdmlzaXRUeXBlRGVmKG5vZGUpCkBAIC0z
MjcsNiArMzMxLDcgQEAgY2xhc3MgVmlzaXRvciB7CiAgICAgdmlzaXRWZWN0b3JUeXBlKG5vZGUp
CiAgICAgewogICAgICAgICBub2RlLmVsZW1lbnRUeXBlLnZpc2l0KHRoaXMpOworICAgICAgICBu
b2RlLm51bUVsZW1lbnRzLnZpc2l0KHRoaXMpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvaW5kZXguaHRtbCBiL1Rvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL2luZGV4Lmh0bWwKaW5kZXggNGM5M2EzM2U2YTM4NjYyZThiYTFlODQyNDAz
ZDRjMDJkNWU5ZjlkZi4uOWMzMWNlOWY0YTg0NzY0OTQ1NmU1NDc1MDdiMGIzMmUwNTZhY2IxYiAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvaW5kZXguaHRtbAorKysg
Yi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9pbmRleC5odG1sCkBAIC0zOCw2ICszOCw3
IEBACiA8c2NyaXB0IHNyYz0iQ2hlY2tSZWN1cnNpdmVUeXBlcy5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0IHNyYz0iQ2hlY2tSZXR1cm5zLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJDaGVja1Vu
cmVhY2hhYmxlQ29kZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iQ2hlY2tUeXBlc1dpdGhB
cmd1bWVudHMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkNoZWNrV3JhcHBlZC5qcyI+PC9z
Y3JpcHQ+CiA8c2NyaXB0IHNyYz0iQ2hlY2tlci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0i
Q2xvbmVQcm9ncmFtLmpzIj48L3NjcmlwdD4KQEAgLTExMCw3ICsxMTEsNiBAQAogPHNjcmlwdCBz
cmM9IlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9
IlJlY3Vyc2lvbkNoZWNrZXIuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlJlY3Vyc2l2ZVR5
cGVDaGVja2VyLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJSZW1vdmVUeXBlQXJndW1lbnRz
LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJSZXNvbHZlTmFtZXMuanMiPjwvc2NyaXB0Pgog
PHNjcmlwdCBzcmM9IlJlc29sdmVPdmVybG9hZEltcGwuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBz
cmM9IlJlc29sdmVQcm9wZXJ0aWVzLmpzIj48L3NjcmlwdD4KQEAgLTEzNCw2ICsxMzQsNyBAQAog
PHNjcmlwdCBzcmM9IlR5cGVEZWYuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlR5cGVEZWZS
ZXNvbHZlci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iVHlwZVJlZi5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iVHlwZU92ZXJsb2FkUmVzb2x1dGlvbkZhaWx1cmUuanMiPjwvc2NyaXB0
PgogPHNjcmlwdCBzcmM9IlR5cGVkVmFsdWUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlVp
bnRMaXRlcmFsLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJVaW50TGl0ZXJhbFR5cGUuanMi
Pjwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347846</attachid>
            <date>2018-08-22 14:21:52 -0700</date>
            <delta_ts>2018-08-22 15:48:58 -0700</delta_ts>
            <desc>Setting .type in Checker will break TypeDefResolver</desc>
            <filename>bug-188773-20180822142151.patch</filename>
            <type>text/plain</type>
            <size>79982</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1MTgzCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYjIyOTRjOGE5MzFkYTYyNDAwZGNmZjkyODJiMTA1YWNk
NjI3YTc1MC4uMTBiN2NlMzA3Y2U3YzFjODM3NDY1ZGU0ZTNkZjA3NTNhZGFmM2RiYSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEy
NCBAQAorMjAxOC0wOC0yMiAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29t
PgorCisgICAgICAgIFtXSExTTF0gQWxsb3cgbmF0aXZlIHR5cGVzIHRvIGhhdmUgdHlwZSBhcmd1
bWVudHMgKGxpa2UgInZlY3RvcjxmbG9hdCwgND4iKQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4NzczCisKKyAgICAgICAgUHJldmlvdXNseSwgdGhl
IHdheSB0byBpZGVudGlmeSBhIHR5cGUgd2FzIHN0cmljdGx5IGJ5IG5hbWUsIHdoaWNoIHdhcyBy
ZXByZXNlbnRlZCBieSBhIHN0cmluZy4gVGhlcmVmb3JlLCB3aGVuIHNvbWV0aGluZyBsaWtlCisg
ICAgICAgICJ2ZWN0b3I8aW50LCAzPiIgd2FzIHBhcnNlZCwgaXQgd291bGQgcHJvZHVjZSBhIFR5
cGVSZWYgd2l0aCB0aGUgbmFtZSAidmVjdG9yIiBhbmQgdHlwZUFyZ3VtZW50cyBbVHlwZVJlZiwg
SW50TGl0ZXJhbF0uIFRoZW4sCisgICAgICAgIHRoZXJlIHdhcyBhIHBhc3MgdG8gY29udmVydCB0
aGUgVHlwZVJlZiB0byBoYXZlIHRoZSBuYW1lICJpbnQzIiBhbmQgbm8gdHlwZUFyZ3VtZW50cy4g
QWZ0ZXIgdGhpcyB0cmFuc2Zvcm1hdGlvbiwgZWFjaCB0eXBlIGNhbgorICAgICAgICBiZSB1bmlx
dWVseSBpZGVudGlmaWVkIGJ5IG5hbWUuCisKKyAgICAgICAgVGhpcyBpcyBva2F5IGZvciB2ZWN0
b3JzIGFuZCBtYXRyaWNlcywgYnV0IGl0IGlzIHVuZm9ydHVuYXRlIGZvciB0ZXh0dXJlcyAoZS5n
LiBUZXh0dXJlMkQ8ZmxvYXQ0PikgYmVjYXVzZSB0aGV5IGRvbid0IGhhdmUgYW55CisgICAgICAg
IG5hdHVyYWwgc3RyaW5nLW9ubHkgbmFtZS4gSW4gYWRkaXRpb24sIHRoZSBjYW5vbmljYWxpemF0
aW9uIHdvdWxkIGhhdmUgdG8gYmUgbWFkZSBhd2FyZSBvZiB0aGUgZmFjdCB0aGF0IFRleHR1cmUy
RDxmbG9hdDQ+IGlzCisgICAgICAgIHRoZSBzYW1lIGFzIFRleHR1cmUyRDx2ZWN0b3I8ZmxvYXQs
IDQ+Pi4gU2ltaWxhcmx5LCBhbiBhdXRob3IgbWF5IHdpc2ggdG8gdHlwZWRlZiBmbG9hdDQgdG8g
YSBkaWZmZXJlbnQgbmFtZS4KKworICAgICAgICBJdCB3b3VsZCBiZSBwb3NzaWJsZSB0byBtYW5n
bGUgdGhlIG5hbWVzIG9mIHRoZSB0ZXh0dXJlIHR5cGVzIHRvIHNvbWV0aGluZyB1bmlxdWUsIGJ1
dCB0aGVuIHdlIGxvc2UgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGlubmVyCisgICAgICAgIHR5cGUu
IEZvciBleGFtcGxlLCBpZiB3ZSBkaWQgdGhpcywgVmlzaXRvciB3b3VsZG4ndCByZWN1cnNlIGlu
dG8gdGhlIGZsb2F0NCB3aGVuIGVuY291bnRlcmluZyBUZXh0dXJlMkQ8ZmxvYXQ0PiBiZWNhdXNl
IHRoYXQKKyAgICAgICAgaW5mb3JtYXRpb24gd291bGQgYmUgbG9zdC4gVGhpcyBjb3VsZCBwb3Rl
bnRpYWxseSBtYWtlIG9wZXJhdGlvbnMgbGlrZSBwcm9ncmFtV2l0aFVubmVjZXNzYXJ5VGhpbmdz
UmVtb3ZlZCgpIG1vcmUgZGlmZmljdWx0IHRvCisgICAgICAgIGltcGxlbWVudCBpbiB0aGUgZnV0
dXJlLgorCisgICAgICAgIFNvLCBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8gaGF2ZSBlYWNoIHR5cGUg
dW5pcXVlbHkgaWRlbnRpZmllZCBieSAobmFtZSwgdHlwZUFyZ3VtZW50cykuIFR5cGVSZWYgd2ls
bCB0aGVyZWZvcmUgYWxzbyBoYXZlCisgICAgICAgIHR5cGVBcmd1bWVudHMgd2hpY2ggYXJlIHVz
ZWQgdG8gZGV0ZXJtaW5lIHdoaWNoIHR5cGUgaXQgaXMgcmVmZXJlbmNpbmcuIEFmdGVyIHRoaXMg
YW5hbHlzaXMgaXMgZG9uZSB0byBkZXRlcm1pbmUgd2hhdCBlYWNoCisgICAgICAgIFR5cGVSZWYg
aXMgcmVmZXJlbmNpbmcsIHN1YnNlcXVlbnQgcGFzc2VzIHNob3VsZG4ndCBjYXJlIGFib3V0IHRo
ZSB0eXBlQXJndW1lbnRzIGFuZCBzaG91bGQgb25seSBjYXJlIGFib3V0IHRoZSAudHlwZSBmaWVs
ZAorICAgICAgICB3aGljaCBoYWQgYmVlbiBzZXQgLSB0aGlzIHdhcyB0cnVlIGV2ZW4gYmVmb3Jl
IHRoaXMgcGF0Y2guCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9BbGwuanM6CisgICAgICAgICogV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvQ2FsbEV4cHJlc3Npb24uanM6CisgICAgICAgIChDYWxsRXhwcmVz
c2lvbi5wcm90b3R5cGUucmVzb2x2ZSk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvQ2hlY2tUeXBlc1dpdGhBcmd1bWVudHMuanM6IENvcGllZCBmcm9tIFRvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL1Jlc29sdmVUeXBlRGVmcy5qcy4KKyAgICAgICAgKGNoZWNrVHlwZXNX
aXRoQXJndW1lbnRzLlR5cGVXaXRoQXJndW1lbnRzQ2hlY2tlci5wcm90b3R5cGUudmlzaXRUeXBl
UmVmKToKKyAgICAgICAgKGNoZWNrVHlwZXNXaXRoQXJndW1lbnRzLlR5cGVXaXRoQXJndW1lbnRz
Q2hlY2tlcik6CisgICAgICAgIChjaGVja1R5cGVzV2l0aEFyZ3VtZW50cyk6CisgICAgICAgICog
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2hlY2tlci5qczoKKyAgICAgICAgKENoZWNrZXIucHJv
dG90eXBlLnZpc2l0UHJvZ3JhbSk6CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS52aXNpdFR5
cGVSZWYpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0luZmVyVHlwZXNGb3JD
YWxsLmpzOgorICAgICAgICAoaW5mZXJUeXBlc0ZvckNhbGwpOgorICAgICAgICAoaW5mZXJUeXBl
c0ZvclR5cGVBcmd1bWVudHMpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0lu
dHJpbnNpY3MuanM6CisgICAgICAgIChJbnRyaW5zaWNzLmNhc3QpOgorICAgICAgICAoSW50cmlu
c2ljcy5iaXR3aXNlQ2FzdCk6CisgICAgICAgIChJbnRyaW5zaWNzLmNhc3RUb0hhbGYpOgorICAg
ICAgICAoSW50cmluc2ljcy4pOgorICAgICAgICAoSW50cmluc2ljcyk6CisgICAgICAgICogV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvTmFtZUNvbnRleHQuanM6CisgICAgICAgIChOYW1lQ29udGV4
dC5wcm90b3R5cGUuYWRkKToKKyAgICAgICAgKE5hbWVDb250ZXh0LnByb3RvdHlwZS5nZXQgbGV0
KToKKyAgICAgICAgKE5hbWVDb250ZXh0LnVuZGVybHlpbmdUaGluZ3MucHJvdG90eXBlLmVsc2Up
OgorICAgICAgICAoTmFtZUNvbnRleHQucHJvdG90eXBlLlN5bWJvbC5pdGVyYXRvcik6CisgICAg
ICAgIChOYW1lQ29udGV4dCk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmFt
ZVJlc29sdmVyLmpzOgorICAgICAgICAoTmFtZVJlc29sdmVyLnByb3RvdHlwZS52aXNpdFR5cGVS
ZWYpOgorICAgICAgICAoTmFtZVJlc29sdmVyLnByb3RvdHlwZS52aXNpdENhbGxFeHByZXNzaW9u
KToKKyAgICAgICAgKE5hbWVSZXNvbHZlcik6CisgICAgICAgIChOYW1lUmVzb2x2ZXIucHJvdG90
eXBlLnZpc2l0VmVjdG9yVHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvTmF0aXZlVHlwZS5qczoKKyAgICAgICAgKE5hdGl2ZVR5cGUpOgorICAgICAgICAo
TmF0aXZlVHlwZS5wcm90b3R5cGUuZ2V0IHR5cGVBcmd1bWVudHMpOgorICAgICAgICAoTmF0aXZl
VHlwZS5wcm90b3R5cGUudG9TdHJpbmcpOgorICAgICAgICAoTmF0aXZlVHlwZS5jcmVhdGUpOgor
ICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1ByZXBhcmUuanM6CisgICAgICAgIChs
ZXQucHJlcGFyZSk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUHJvZ3JhbS5q
czoKKyAgICAgICAgKFByb2dyYW0ucHJvdG90eXBlLmFkZCk6CisgICAgICAgIChQcm9ncmFtLnBy
b3RvdHlwZS50b1N0cmluZyk6CisgICAgICAgIChQcm9ncmFtKToKKyAgICAgICAgKiBXZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9SZWN1cnNpdmVUeXBlQ2hlY2tlci5qczoKKyAgICAgICAgKFJlY3Vy
c2l2ZVR5cGVDaGVja2VyLnByb3RvdHlwZS52aXNpdFR5cGVSZWYpOgorICAgICAgICAoUmVjdXJz
aXZlVHlwZUNoZWNrZXIpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1JlbW92
ZVR5cGVBcmd1bWVudHMuanM6IFJlbW92ZWQuCisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvUmVzb2x2ZU5hbWVzLmpzOgorICAgICAgICAocmVzb2x2ZU5hbWVzSW5UeXBlcyk6Cisg
ICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmVzb2x2ZU92ZXJsb2FkSW1wbC5qczoK
KyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXNvbHZlVHlwZURlZnMuanM6Cisg
ICAgICAgIChyZXNvbHZlVHlwZURlZnNJblR5cGVzKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9SZXdyaXRlci5qczoKKyAgICAgICAgKFJld3JpdGVyLnByb3RvdHlwZS52aXNp
dFR5cGVSZWYpOgorICAgICAgICAoUmV3cml0ZXIucHJvdG90eXBlLnZpc2l0VmVjdG9yVHlwZSk6
CisgICAgICAgIChSZXdyaXRlcik6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
U1BJUlYuaHRtbDoKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TdGFuZGFyZExp
YnJhcnkuanM6CisgICAgICAgIChib29sLm9wZXJhdG9yKToKKyAgICAgICAgKiBXZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9TdGF0ZW1lbnRDbG9uZXIuanM6CisgICAgICAgIChTdGF0ZW1lbnRDbG9u
ZXIucHJvdG90eXBlLnZpc2l0TmF0aXZlVHlwZSk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvU3ludGhlc2l6ZURlZmF1bHRDb25zdHJ1Y3Rvck9wZXJhdG9yLmpzOgorICAgICAg
ICAoc3ludGhlc2l6ZURlZmF1bHRDb25zdHJ1Y3Rvck9wZXJhdG9yLkZpbmRBbGxUeXBlcy5wcm90
b3R5cGUudmlzaXRWZWN0b3JUeXBlKToKKyAgICAgICAgKHN5bnRoZXNpemVEZWZhdWx0Q29uc3Ry
dWN0b3JPcGVyYXRvci5GaW5kQWxsVHlwZXMpOgorICAgICAgICAoc3ludGhlc2l6ZURlZmF1bHRD
b25zdHJ1Y3Rvck9wZXJhdG9yKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9T
eW50aGVzaXplU3RydWN0QWNjZXNzb3JzLmpzOgorICAgICAgICAoc3ludGhlc2l6ZVN0cnVjdEFj
Y2Vzc29ycy5jcmVhdGVUeXBlUmVmKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9UZXN0Lmh0bWw6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5qczoK
KyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UeXBlT3ZlcmxvYWRSZXNvbHV0aW9u
RmFpbHVyZS5qczogQ29waWVkIGZyb20gVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmVz
b2x2ZVR5cGVEZWZzLmpzLgorICAgICAgICAoVHlwZU92ZXJsb2FkUmVzb2x1dGlvbkZhaWx1cmUp
OgorICAgICAgICAoVHlwZU92ZXJsb2FkUmVzb2x1dGlvbkZhaWx1cmUucHJvdG90eXBlLmdldCB0
eXBlKToKKyAgICAgICAgKFR5cGVPdmVybG9hZFJlc29sdXRpb25GYWlsdXJlLnByb3RvdHlwZS5n
ZXQgcmVhc29uKToKKyAgICAgICAgKFR5cGVPdmVybG9hZFJlc29sdXRpb25GYWlsdXJlLnByb3Rv
dHlwZS50b1N0cmluZyk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVHlwZVJl
Zi5qczoKKyAgICAgICAgKFR5cGVSZWYpOgorICAgICAgICAoVHlwZVJlZi53cmFwKToKKyAgICAg
ICAgKFR5cGVSZWYucHJvdG90eXBlLmdldCBwb3NzaWJsZU92ZXJsb2Fkcyk6CisgICAgICAgIChU
eXBlUmVmLnByb3RvdHlwZS5zZXQgcG9zc2libGVPdmVybG9hZHMpOgorICAgICAgICAoVHlwZVJl
Zi5wcm90b3R5cGUucmVzb2x2ZSk6CisgICAgICAgIChUeXBlUmVmLnByb3RvdHlwZS50b1N0cmlu
Zyk6CisgICAgICAgIChUeXBlUmVmLmluc3RhbnRpYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBX
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9VbmlmaWNhdGlvbkNvbnRleHQuanM6CisgICAgICAgIChV
bmlmaWNhdGlvbkNvbnRleHQucHJvdG90eXBlLnZlcmlmeSk6CisgICAgICAgICogV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvVmVjdG9yVHlwZS5qczoKKyAgICAgICAgKFZlY3RvclR5cGUpOgorICAg
ICAgICAoVmVjdG9yVHlwZS5wcm90b3R5cGUuZ2V0IGVsZW1lbnRUeXBlKToKKyAgICAgICAgKFZl
Y3RvclR5cGUucHJvdG90eXBlLmdldCBudW1FbGVtZW50cyk6CisgICAgICAgIChWZWN0b3JUeXBl
LnByb3RvdHlwZS5nZXQgbnVtRWxlbWVudHNWYWx1ZSk6CisgICAgICAgIChWZWN0b3JUeXBlLnBy
b3RvdHlwZS50b1N0cmluZyk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVmlz
aXRvci5qczoKKyAgICAgICAgKFZpc2l0b3IucHJvdG90eXBlLnZpc2l0VHlwZVJlZik6CisgICAg
ICAgIChWaXNpdG9yLnByb3RvdHlwZS52aXNpdE5hdGl2ZVR5cGUpOgorICAgICAgICAoVmlzaXRv
ci5wcm90b3R5cGUudmlzaXRWZWN0b3JUeXBlKToKKyAgICAgICAgKFZpc2l0b3IpOgorICAgICAg
ICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL2luZGV4Lmh0bWw6CisKIDIwMTgtMDgtMjEgIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSb2xs
IG91dCByMjM1MTM5IGFuZCByMjM1MTQ2CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9BbGwuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9BbGwuanMK
aW5kZXggODE1MjUyNzNhZTY1YTE0ODY1OTY0YTEzZGE0NWNlOTRlZjEwNjg0YS4uZjlhMWQ5OWVh
ZGM4N2I0YTQwOGNmZjllNDk5MGE3MzdlY2I4YmExZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvQWxsLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL0FsbC5qcwpAQCAtNjAsNiArNjAsNyBAQCBsb2FkKCJDaGVja0xvb3BzLmpzIik7CiBsb2Fk
KCJDaGVja1JlY3Vyc2lvbi5qcyIpOwogbG9hZCgiQ2hlY2tSZWN1cnNpdmVUeXBlcy5qcyIpOwog
bG9hZCgiQ2hlY2tSZXR1cm5zLmpzIik7Citsb2FkKCJDaGVja1R5cGVzV2l0aEFyZ3VtZW50cy5q
cyIpOwogbG9hZCgiQ2hlY2tVbnJlYWNoYWJsZUNvZGUuanMiKTsKIGxvYWQoIkNoZWNrV3JhcHBl
ZC5qcyIpOwogbG9hZCgiQ2hlY2tlci5qcyIpOwpAQCAtMTMzLDcgKzEzNCw2IEBAIGxvYWQoIlB0
clR5cGUuanMiKTsKIGxvYWQoIlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uanMiKTsKIGxvYWQo
IlJlY3Vyc2lvbkNoZWNrZXIuanMiKTsKIGxvYWQoIlJlY3Vyc2l2ZVR5cGVDaGVja2VyLmpzIik7
Ci1sb2FkKCJSZW1vdmVUeXBlQXJndW1lbnRzLmpzIik7CiBsb2FkKCJSZXNvbHZlTmFtZXMuanMi
KTsKIGxvYWQoIlJlc29sdmVPdmVybG9hZEltcGwuanMiKTsKIGxvYWQoIlJlc29sdmVQcm9wZXJ0
aWVzLmpzIik7CkBAIC0xNTcsNiArMTU3LDcgQEAgbG9hZCgiVHJhcFN0YXRlbWVudC5qcyIpOwog
bG9hZCgiVHlwZURlZi5qcyIpOwogbG9hZCgiVHlwZURlZlJlc29sdmVyLmpzIik7CiBsb2FkKCJU
eXBlUmVmLmpzIik7Citsb2FkKCJUeXBlT3ZlcmxvYWRSZXNvbHV0aW9uRmFpbHVyZS5qcyIpOwog
bG9hZCgiVHlwZWRWYWx1ZS5qcyIpOwogbG9hZCgiVWludExpdGVyYWwuanMiKTsKIGxvYWQoIlVp
bnRMaXRlcmFsVHlwZS5qcyIpOwpAQCAtMTcwLDQgKzE3MSw0IEBAIGxvYWQoIldTeW50YXhFcnJv
ci5qcyIpOwogbG9hZCgiV1RyYXBFcnJvci5qcyIpOwogbG9hZCgiV1R5cGVFcnJvci5qcyIpOwog
bG9hZCgiV2hpbGVMb29wLmpzIik7Ci1sb2FkKCJXcmFwQ2hlY2tlci5qcyIpOwpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKK2xvYWQoIldyYXBDaGVja2VyLmpzIik7CmRpZmYgLS1naXQgYS9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DYWxsRXhwcmVzc2lvbi5qcyBiL1Rvb2xzL1dl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NhbGxFeHByZXNzaW9uLmpzCmluZGV4IGIyNTM5OGYwYjFi
NmVhZGUxYjc5YWM5MGU2YTc2MjUyNWY4MTliZDcuLjNiMTU0NTU5OTJlNjRlMjY3N2JhMGIwM2Fi
NjU2OGVmNDNkNWQ4NjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L0NhbGxFeHByZXNzaW9uLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Nh
bGxFeHByZXNzaW9uLmpzCkBAIC02NCw3ICs2NCw2IEBAIGNsYXNzIENhbGxFeHByZXNzaW9uIGV4
dGVuZHMgRXhwcmVzc2lvbiB7CiAgICAgICAgICAgICAgICAgb3ZlcmxvYWQuZnVuYyA9IGZ1bmM7
CiAgICAgICAgIH0KIAotCiAgICAgICAgIGlmICghb3ZlcmxvYWQuZnVuYykgewogICAgICAgICAg
ICAgZmFpbHVyZXMucHVzaCguLi5vdmVybG9hZC5mYWlsdXJlcyk7CiAgICAgICAgICAgICBsZXQg
bWVzc2FnZSA9ICJEaWQgbm90IGZpbmQgZnVuY3Rpb24gbmFtZWQgIiArIHRoaXMubmFtZSArICIg
Zm9yIGNhbGwgd2l0aCAiOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvQ2hlY2tUeXBlc1dpdGhBcmd1bWVudHMuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9DaGVja1R5cGVzV2l0aEFyZ3VtZW50cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYjZiMmJkNDk4ZTc3
YjE0OWRmNGM2OGY0ZWYzYWMxZmYxY2RhYWIyCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2hlY2tUeXBlc1dpdGhBcmd1bWVudHMuanMKQEAgLTAsMCAr
MSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworInVz
ZSBzdHJpY3QiOworCitmdW5jdGlvbiBjaGVja1R5cGVzV2l0aEFyZ3VtZW50cyhwcm9ncmFtKQor
eworICAgIGNsYXNzIFR5cGVXaXRoQXJndW1lbnRzQ2hlY2tlciBleHRlbmRzIFZpc2l0b3Igewor
ICAgICAgICB2aXNpdFR5cGVSZWYobm9kZSkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG5v
ZGUubmFtZSA9PSAidmVjdG9yIiAmJiBub2RlLnR5cGVBcmd1bWVudHMubGVuZ3RoID09IDApCisg
ICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCdWlsdGluIHR5cGUgJHtub2RlLm5hbWV9
IHNob3VsZCBhbHdheXMgaGF2ZSB0eXBlIGFyZ3VtZW50cy4iKTsKKyAgICAgICAgfQorICAgIH0K
KyAgICBwcm9ncmFtLnZpc2l0KG5ldyBUeXBlV2l0aEFyZ3VtZW50c0NoZWNrZXIoKSk7Cit9CisK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NoZWNrZXIuanMgYi9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DaGVja2VyLmpzCmluZGV4IDFhMTRjODY2YWNl
ZDQxMTJiMTgwZjY5MTU2YzA2ZDJiNjY0ZDg3ZTIuLjdiMDJkNDFhOTIwOGY1ZWNlMjA4NGQ0MTQ0
MmZiZTJjNDI5YWU1MTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L0NoZWNrZXIuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2hlY2tlci5q
cwpAQCAtNDEsOCArNDEsMTMgQEAgY2xhc3MgQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogICAg
ICAgICAgICAgc3RhdGVtZW50LnZpc2l0KHRoaXMpOwogICAgICAgICB9CiAgICAgICAgIAotICAg
ICAgICBmb3IgKGxldCB0eXBlIG9mIG5vZGUudHlwZXMudmFsdWVzKCkpCi0gICAgICAgICAgICBk
b1N0YXRlbWVudCh0eXBlKTsKKyAgICAgICAgZm9yIChsZXQgdHlwZSBvZiBub2RlLnR5cGVzLnZh
bHVlcygpKSB7CisgICAgICAgICAgICBpZiAodHlwZSBpbnN0YW5jZW9mIEFycmF5KSB7CisgICAg
ICAgICAgICAgICAgZm9yIChsZXQgY29uc3RpdHVlbnRUeXBlIG9mIHR5cGUpCisgICAgICAgICAg
ICAgICAgICAgIGRvU3RhdGVtZW50KGNvbnN0aXR1ZW50VHlwZSk7CisgICAgICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgICAgICBkb1N0YXRlbWVudCh0eXBlKTsKKyAgICAgICAgfQogICAgICAg
ICBmb3IgKGxldCBmdW5jcyBvZiBub2RlLmZ1bmN0aW9ucy52YWx1ZXMoKSkgewogICAgICAgICAg
ICAgZm9yIChsZXQgZnVuYyBvZiBmdW5jcykgewogICAgICAgICAgICAgICAgIHRoaXMudmlzaXRG
dW5jKGZ1bmMpOwpAQCAtMjQ1LDggKzI1MCwxNyBAQCBjbGFzcyBDaGVja2VyIGV4dGVuZHMgVmlz
aXRvciB7CiAgICAgCiAgICAgdmlzaXRUeXBlUmVmKG5vZGUpCiAgICAgewotICAgICAgICBpZiAo
IW5vZGUudHlwZSkKKyAgICAgICAgc3VwZXIudmlzaXRUeXBlUmVmKG5vZGUpOworICAgICAgICBp
ZiAoIW5vZGUudHlwZSAmJiAhbm9kZS5wb3NzaWJsZU92ZXJsb2FkcykKICAgICAgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiVHlwZSByZWZlcmVuY2Ugd2l0aG91dCBhIHR5cGUgaW4gY2hlY2tlcjog
IiArIG5vZGUgKyAiIGF0ICIgKyBub2RlLm9yaWdpbik7CisgICAgICAgIGlmICghbm9kZS50eXBl
KQorICAgICAgICAgICAgbm9kZS5yZXNvbHZlKG5vZGUucG9zc2libGVPdmVybG9hZHMsIHRoaXMu
X3Byb2dyYW0pOworICAgICAgICBpZiAoIW5vZGUudHlwZSkKKyAgICAgICAgICAgIHRocm93IG5l
dyBFcnJvcigiVHlwZSByZWZlcmVuY2Ugd2l0aG91dCBhIHR5cGUgYWZ0ZXIgcG9zc2libHkgcmVz
b2x2aW5nIGluIGNoZWNrZXI6ICIgKyBub2RlICsgIiBhdCAiICsgbm9kZS5vcmlnaW4pOworICAg
ICAgICAvLyBBbGwgdGhlIHN0cnVjdHMgd2lsbCBiZSB2aXNpdGVkIGJ5IHZpc2l0UHJvZ3JhbSgp
IGl0ZXJhdGluZyB0aHJvdWdoIGVhY2ggdG9wLWxldmVsIHR5cGUuCisgICAgICAgIC8vIFdlIGRv
bid0IHdhbnQgdG8gcmVjdXJzZSBoZXJlIGJlY2F1c2UgdGhlIGNvbnRlbnRzIG9mIHN0cnVjdHMg
Y2FuIHJlZmVyIHRvIHRoZW1zZWx2ZXMgKGUuZy4gYSBsaW5rZWQgbGlzdCksCisgICAgICAgIC8v
IGFuZCB0aGlzIHdvdWxkIGNhbiBhbiBpbmZpbml0ZSBsb29wLgorICAgICAgICAvLyBUeXBlZGVm
cyBjYW4ndCByZWZlciB0byB0aGVtc2VsdmVzIGJlY2F1c2Ugd2UgY2hlY2sgdGhhdCBpbiBUeXBl
RGVmUmVzb2x2ZXIuCiAgICAgICAgIGlmICghKG5vZGUudHlwZSBpbnN0YW5jZW9mIFN0cnVjdFR5
cGUpKQogICAgICAgICAgICAgbm9kZS50eXBlLnZpc2l0KHRoaXMpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0luZmVyVHlwZXNGb3JDYWxsLmpzIGIv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvSW5mZXJUeXBlc0ZvckNhbGwuanMKaW5kZXgg
NWYzMmVkMWM0OTBhN2RmODk0MWU5MTljMTMwY2Y2NWVhYThiNmE0ZC4uYmNmZWI5ODZjYWZmNDlm
MDI4N2E4MzY3OGJmMTE1NjI4NDdmMDM4OSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvSW5mZXJUeXBlc0ZvckNhbGwuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvSW5mZXJUeXBlc0ZvckNhbGwuanMKQEAgLTM2LDEyICszNiw4IEBAIGZ1bmN0
aW9uIGluZmVyVHlwZXNGb3JDYWxsKGZ1bmMsIGFyZ3VtZW50VHlwZXMsIHJldHVyblR5cGUpCiAg
ICAgICAgIGlmICghYXJndW1lbnRUeXBlc1tpXS51bmlmeSh1bmlmaWNhdGlvbkNvbnRleHQsIGZ1
bmMucGFyYW1ldGVyc1tpXS50eXBlKSkKICAgICAgICAgICAgIHJldHVybiB7ZmFpbHVyZTogbmV3
IE92ZXJsb2FkUmVzb2x1dGlvbkZhaWx1cmUoZnVuYywgIkFyZ3VtZW50ICMiICsgKGkgKyAxKSAr
ICIgIiArIChmdW5jLnBhcmFtZXRlcnNbaV0ubmFtZSA/ICJmb3IgcGFyYW1ldGVyICIgKyBmdW5j
LnBhcmFtZXRlcnNbaV0ubmFtZSArICIgIiA6ICIiKSArICJkb2VzIG5vdCBtYXRjaCAocGFzc2Vk
ICIgKyBhcmd1bWVudFR5cGVzW2ldICsgIiwgcmVxdWlyZSAiICsgZnVuYy5wYXJhbWV0ZXJzW2ld
LnR5cGUgKyAiKSIpfTsKICAgICB9Ci0gICAgaWYgKHJldHVyblR5cGUgJiYgIXJldHVyblR5cGUu
dW5pZnkodW5pZmljYXRpb25Db250ZXh0LCBmdW5jLnJldHVyblR5cGUpKSB7Ci0gICAgICAgIGlm
IChmdW5jLnJldHVyblR5cGUudG9TdHJpbmcoKSA9PSAidmVjdG9yIikgewotICAgICAgICAgICAg
cmV0dXJuVHlwZS51bmlmeSh1bmlmaWNhdGlvbkNvbnRleHQsIGZ1bmMucmV0dXJuVHlwZSkKLSAg
ICAgICAgfQorICAgIGlmIChyZXR1cm5UeXBlICYmICFyZXR1cm5UeXBlLnVuaWZ5KHVuaWZpY2F0
aW9uQ29udGV4dCwgZnVuYy5yZXR1cm5UeXBlKSkKICAgICAgICAgcmV0dXJuIHtmYWlsdXJlOiBu
ZXcgT3ZlcmxvYWRSZXNvbHV0aW9uRmFpbHVyZShmdW5jLCAiUmV0dXJuIHR5cGUgIiArIGZ1bmMu
cmV0dXJuVHlwZSArICIgZG9lcyBub3QgbWF0Y2ggIiArIHJldHVyblR5cGUpfTsKLSAgICB9CiAg
ICAgbGV0IHZlcmlmaWNhdGlvblJlc3VsdCA9IHVuaWZpY2F0aW9uQ29udGV4dC52ZXJpZnkoKTsK
ICAgICBpZiAoIXZlcmlmaWNhdGlvblJlc3VsdC5yZXN1bHQpCiAgICAgICAgIHJldHVybiB7ZmFp
bHVyZTogbmV3IE92ZXJsb2FkUmVzb2x1dGlvbkZhaWx1cmUoZnVuYywgdmVyaWZpY2F0aW9uUmVz
dWx0LnJlYXNvbil9OwpAQCAtNDksMyArNDUsMjEgQEAgZnVuY3Rpb24gaW5mZXJUeXBlc0ZvckNh
bGwoZnVuYywgYXJndW1lbnRUeXBlcywgcmV0dXJuVHlwZSkKICAgICByZXR1cm4ge2Z1bmMsIHVu
aWZpY2F0aW9uQ29udGV4dH07CiB9CiAKK2Z1bmN0aW9uIGluZmVyVHlwZXNGb3JUeXBlQXJndW1l
bnRzKHR5cGUsIHR5cGVBcmd1bWVudHMpCit7CisgICAgaWYgKHR5cGVBcmd1bWVudHMubGVuZ3Ro
ICE9IHR5cGUudHlwZUFyZ3VtZW50cy5sZW5ndGgpCisgICAgICAgIHJldHVybiB7ZmFpbHVyZTog
bmV3IFR5cGVPdmVybG9hZFJlc29sdXRpb25GYWlsdXJlKHR5cGUsICJXcm9uZyBudW1iZXIgb2Yg
YXJndW1lbnRzIChwYXNzZWQgIiArIHR5cGVBcmd1bWVudHMubGVuZ3RoICsgIiwgcmVxdWlyZSAi
ICsgdHlwZS50eXBlQXJndW1lbnRzLmxlbmd0aCArICIpIil9OworICAgIGxldCB1bmlmaWNhdGlv
bkNvbnRleHQgPSBuZXcgVW5pZmljYXRpb25Db250ZXh0KCk7CisKKyAgICBmb3IgKGxldCBpID0g
MDsgaSA8IHR5cGVBcmd1bWVudHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgaWYgKCF0eXBlQXJn
dW1lbnRzW2ldKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJOdWxsIHR5cGUgYXJndW1l
bnQgYXQgaSA9ICIgKyBpKTsKKyAgICAgICAgaWYgKCF0eXBlQXJndW1lbnRzW2ldLnVuaWZ5KHVu
aWZpY2F0aW9uQ29udGV4dCwgdHlwZS50eXBlQXJndW1lbnRzW2ldKSkKKyAgICAgICAgICAgIHJl
dHVybiB7ZmFpbHVyZTogbmV3IFR5cGVPdmVybG9hZFJlc29sdXRpb25GYWlsdXJlKHR5cGUsICJB
cmd1bWVudCAjIiArIChpICsgMSkgKyAiICIgKyAodHlwZS50eXBlQXJndW1lbnRzW2ldLm5hbWUg
PyAiZm9yIHBhcmFtZXRlciAiICsgdHlwZS50eXBlQXJndW1lbnRzW2ldLm5hbWUgKyAiICIgOiAi
IikgKyAiZG9lcyBub3QgbWF0Y2ggKHBhc3NlZCAiICsgdHlwZUFyZ3VtZW50c1tpXSArICIsIHJl
cXVpcmUgIiArIHR5cGUudHlwZUFyZ3VtZW50c1tpXS50eXBlICsgIikiKX07CisgICAgfQorICAg
IGxldCB2ZXJpZmljYXRpb25SZXN1bHQgPSB1bmlmaWNhdGlvbkNvbnRleHQudmVyaWZ5KCk7Cisg
ICAgaWYgKCF2ZXJpZmljYXRpb25SZXN1bHQucmVzdWx0KQorICAgICAgICByZXR1cm4ge2ZhaWx1
cmU6IG5ldyBUeXBlT3ZlcmxvYWRSZXNvbHV0aW9uRmFpbHVyZSh0eXBlLCB2ZXJpZmljYXRpb25S
ZXN1bHQucmVhc29uKX07CisKKyAgICByZXR1cm4ge3R5cGUsIHVuaWZpY2F0aW9uQ29udGV4dH07
Cit9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9JbnRyaW5zaWNz
LmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvSW50cmluc2ljcy5qcwppbmRleCA1
MGQ0MGMwYzBlNDdlMTEyYmM3NGNjZmNjYjcwNDk0MjcxMTZiMGZiLi5lOWMzZDFiMzQxNzZhNGJm
ZDc5YjRmNDQ5NGIzN2JlMGU1ZTliMzgwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9JbnRyaW5zaWNzLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL0ludHJpbnNpY3MuanMKQEAgLTMzLDE1ICszMyw3IEBAIGNsYXNzIEludHJpbnNpY3Mgewog
ICAgICAgICAvLyB0byBjYXRjaCB0aGUgaW50cmluc2ljcyBtdXN0IGJlIGJhc2VkIG9uIHRoZSB0
eXBlIG5hbWVzIHRoYXQgU3RhbmRhcmRMaWJyYXJ5LmpzIHVzZXMuCiAgICAgICAgIC8vIEZvciBl
eGFtcGxlLCBpZiBhIG5hdGl2ZSBmdW5jdGlvbiBpcyBkZWNsYXJlZCB1c2luZyAiaW50IiByYXRo
ZXIgdGhhbiAiaW50IiwgdGhlbiB3ZSBtdXN0CiAgICAgICAgIC8vIHVzZSAiaW50IiBoZXJlLCBz
aW5jZSB3ZSBkb24ndCB5ZXQga25vdyB0aGF0IHRoZXkgYXJlIHRoZSBzYW1lIHR5cGUuCi0gICAg
ICAgIAotICAgICAgICB0aGlzLl9tYXAuc2V0KAotICAgICAgICAgICAgIm5hdGl2ZSB0eXBlZGVm
IHZvaWQiLAotICAgICAgICAgICAgdHlwZSA9PiB7Ci0gICAgICAgICAgICAgICAgdGhpcy52b2lk
ID0gdHlwZTsKLSAgICAgICAgICAgICAgICB0eXBlLnNpemUgPSAwOwotICAgICAgICAgICAgICAg
IHR5cGUucG9wdWxhdGVEZWZhdWx0VmFsdWUgPSAoKSA9PiB7IH07Ci0gICAgICAgICAgICB9KTsK
LSAgICAgICAgCisKICAgICAgICAgZnVuY3Rpb24gaXNCaXR3aXNlRXF1aXZhbGVudChsZWZ0LCBy
aWdodCkKICAgICAgICAgewogICAgICAgICAgICAgbGV0IGRvdWJsZUFycmF5ID0gbmV3IEZsb2F0
NjRBcnJheSgxKTsKQEAgLTU2LDU4ICs0OCw4MyBAQCBjbGFzcyBJbnRyaW5zaWNzIHsKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKKyAgICAgICAgZnVuY3Rpb24gY2FzdCh0
eXBlZEFycmF5Q29uc3RydWN0b3IsIG51bWJlcikKKyAgICAgICAgeworICAgICAgICAgICAgdmFy
IGFycmF5ID0gbmV3IHR5cGVkQXJyYXlDb25zdHJ1Y3RvcigxKTsKKyAgICAgICAgICAgIGFycmF5
WzBdID0gbnVtYmVyOworICAgICAgICAgICAgcmV0dXJuIGFycmF5WzBdOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gYml0d2lzZUNhc3QodHlwZWRBcnJheUNvbnN0cnVjdG9yMSwgdHlw
ZWRBcnJheUNvbnN0cnVjdG9yMiwgdmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGxldCB0
eXBlZEFycmF5MSA9IG5ldyB0eXBlZEFycmF5Q29uc3RydWN0b3IxKDEpOworICAgICAgICAgICAg
bGV0IHR5cGVkQXJyYXkyID0gbmV3IHR5cGVkQXJyYXlDb25zdHJ1Y3RvcjIodHlwZWRBcnJheTEu
YnVmZmVyKTsKKyAgICAgICAgICAgIHR5cGVkQXJyYXkxWzBdID0gdmFsdWU7CisgICAgICAgICAg
ICByZXR1cm4gdHlwZWRBcnJheTJbMF07CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBj
YXN0VG9IYWxmKG51bWJlcikKKyAgICAgICAgeworICAgICAgICAgICAgLy8gRklYTUU6IE1ha2Ug
dGhpcyBtYXRoIG9iZXkgSUVFRSA3NTQuCisgICAgICAgICAgICBpZiAoTnVtYmVyLmlzTmFOKG51
bWJlcikpCisgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyCisgICAgICAgICAgICBpZiAobnVt
YmVyID4gNjU1MDQpCisgICAgICAgICAgICAgICAgcmV0dXJuIE51bWJlci5QT1NJVElWRV9JTkZJ
TklUWTsKKyAgICAgICAgICAgIGlmIChudW1iZXIgPCAtNjU1MDQpCisgICAgICAgICAgICAgICAg
cmV0dXJuIE51bWJlci5ORUdBVElWRV9JTkZJTklUWTsKKyAgICAgICAgICAgIGlmIChudW1iZXIg
PiAwICYmIG51bWJlciA8IE1hdGgucG93KDIsIC0yNCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgICAgICBpZiAobnVtYmVyIDwgMCAmJiBudW1iZXIgPiAtTWF0aC5wb3coMiwg
LTI0KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTA7CisgICAgICAgICAgICBsZXQgZG91Ymxl
QXJyYXkgPSBuZXcgRmxvYXQ2NEFycmF5KDEpOworICAgICAgICAgICAgbGV0IHVpbnRBcnJheSA9
IG5ldyBVaW50OEFycmF5KGRvdWJsZUFycmF5LmJ1ZmZlcik7CisgICAgICAgICAgICBkb3VibGVB
cnJheVswXSA9IG51bWJlcjsKKyAgICAgICAgICAgIGxldCBzaWduID0gdWludEFycmF5WzddICYg
MHg4MDsKKyAgICAgICAgICAgIGxldCBleHBvbmVudCA9ICgodWludEFycmF5WzddICYgMHg3Zikg
PDwgNCkgfCAoKHVpbnRBcnJheVs2XSAmIDB4ZjApID4+PiA0KTsKKyAgICAgICAgICAgIGxldCBz
aWduaWZpY2FuZCA9ICgodWludEFycmF5WzZdICYgMHgwZikgPDwgNikgfCAoKHVpbnRBcnJheVs1
XSAmIDB4ZmMpID4+PiAyKTsKKworICAgICAgICAgICAgaWYgKChleHBvbmVudCAtIDEwMjMpIDwg
LTE0KSB7CisgICAgICAgICAgICAgICAgZXhwb25lbnQgPSAwOworICAgICAgICAgICAgICAgIHNp
Z25pZmljYW5kID0gKE1hdGguYWJzKG51bWJlcikgKiBNYXRoLnBvdygyLCAyNCkpID4+PiAwOwor
ICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IE1hdGgucG93KDIsIC0xNCkgKiBzaWduaWZpY2Fu
ZCAvIDEwMjQ7CisgICAgICAgICAgICAgICAgaWYgKHNpZ24gIT0gMCkKKyAgICAgICAgICAgICAg
ICAgICAgdmFsdWUgKj0gLTE7CisgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBkb3VibGVBcnJheVswXSA9IDA7CisKKyAgICAgICAgICAg
IHVpbnRBcnJheVs3XSB8PSBzaWduOworICAgICAgICAgICAgdWludEFycmF5WzddIHw9IChleHBv
bmVudCA+Pj4gNCk7CisgICAgICAgICAgICB1aW50QXJyYXlbNl0gfD0gKChleHBvbmVudCA8PCA0
KSAmIDB4ZjApOworICAgICAgICAgICAgdWludEFycmF5WzZdIHw9IChzaWduaWZpY2FuZCA+Pj4g
Nik7CisgICAgICAgICAgICB1aW50QXJyYXlbNV0gfD0gKChzaWduaWZpY2FuZCA8PCAyKSAmIDB4
ZmMpOworCisgICAgICAgICAgICByZXR1cm4gZG91YmxlQXJyYXlbMF07CisgICAgICAgIH0KKwog
ICAgICAgICB0aGlzLl9tYXAuc2V0KAotICAgICAgICAgICAgIm5hdGl2ZSB0eXBlZGVmIGludCIs
CisgICAgICAgICAgICAibmF0aXZlIHR5cGVkZWYgdm9pZCIsCiAgICAgICAgICAgICB0eXBlID0+
IHsKLSAgICAgICAgICAgICAgICB0aGlzLmludCA9IHR5cGU7Ci0gICAgICAgICAgICAgICAgdHlw
ZS5pc1ByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgdHlwZS5pc0ludCA9IHRydWU7
Ci0gICAgICAgICAgICAgICAgdHlwZS5pc051bWJlciA9IHRydWU7Ci0gICAgICAgICAgICAgICAg
dHlwZS5pc1NpZ25lZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgdHlwZS5jYW5SZXByZXNlbnQg
PSB2YWx1ZSA9PiBpc0JpdHdpc2VFcXVpdmFsZW50KHZhbHVlIHwgMCwgdmFsdWUpOwotICAgICAg
ICAgICAgICAgIHR5cGUuc2l6ZSA9IDE7Ci0gICAgICAgICAgICAgICAgdHlwZS5kZWZhdWx0VmFs
dWUgPSAwOwotICAgICAgICAgICAgICAgIHR5cGUuY3JlYXRlTGl0ZXJhbCA9IChvcmlnaW4sIHZh
bHVlKSA9PiBJbnRMaXRlcmFsLndpdGhUeXBlKG9yaWdpbiwgdmFsdWUgfCAwLCB0eXBlKTsKLSAg
ICAgICAgICAgICAgICB0eXBlLnN1Y2Nlc3NvclZhbHVlID0gdmFsdWUgPT4gKHZhbHVlICsgMSkg
fCAwOwotICAgICAgICAgICAgICAgIHR5cGUudmFsdWVzRXF1YWwgPSAoYSwgYikgPT4gYSA9PT0g
YjsKLSAgICAgICAgICAgICAgICB0eXBlLnBvcHVsYXRlRGVmYXVsdFZhbHVlID0gKGJ1ZmZlciwg
b2Zmc2V0KSA9PiBidWZmZXIuc2V0KG9mZnNldCwgMCk7Ci0gICAgICAgICAgICAgICAgdHlwZS5m
b3JtYXRWYWx1ZUZyb21JbnRMaXRlcmFsID0gdmFsdWUgPT4gdmFsdWUgfCAwOwotICAgICAgICAg
ICAgICAgIHR5cGUuZm9ybWF0VmFsdWVGcm9tVWludExpdGVyYWwgPSB2YWx1ZSA9PiB2YWx1ZSB8
IDA7Ci0gICAgICAgICAgICAgICAgdHlwZS5hbGxWYWx1ZXMgPSBmdW5jdGlvbiooKSB7IAotICAg
ICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSAweGZmZmZmZmZmOyArK2kpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGkgfCAwOwotICAgICAgICAgICAg
ICAgICAgICAgICAgeWllbGQge3ZhbHVlOiB2YWx1ZSwgbmFtZTogdmFsdWV9OwotICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICB0aGlzLnZv
aWQgPSB0eXBlOworICAgICAgICAgICAgICAgIHR5cGUuc2l6ZSA9IDA7CisgICAgICAgICAgICAg
ICAgdHlwZS5wb3B1bGF0ZURlZmF1bHRWYWx1ZSA9ICgpID0+IHsgfTsKICAgICAgICAgICAgIH0p
OwogCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCi0gICAgICAgICAgICAibmF0aXZlIHR5cGVkZWYg
dWludCIsCisgICAgICAgICAgICAibmF0aXZlIHR5cGVkZWYgYm9vbCIsCiAgICAgICAgICAgICB0
eXBlID0+IHsKLSAgICAgICAgICAgICAgICB0aGlzLnVpbnQgPSB0eXBlOworICAgICAgICAgICAg
ICAgIHRoaXMuYm9vbCA9IHR5cGU7CiAgICAgICAgICAgICAgICAgdHlwZS5pc1ByaW1pdGl2ZSA9
IHRydWU7Ci0gICAgICAgICAgICAgICAgdHlwZS5pc0ludCA9IHRydWU7Ci0gICAgICAgICAgICAg
ICAgdHlwZS5pc051bWJlciA9IHRydWU7Ci0gICAgICAgICAgICAgICAgdHlwZS5pc1NpZ25lZCA9
IGZhbHNlOwotICAgICAgICAgICAgICAgIHR5cGUuY2FuUmVwcmVzZW50ID0gdmFsdWUgPT4gaXNC
aXR3aXNlRXF1aXZhbGVudCh2YWx1ZSA+Pj4gMCwgdmFsdWUpOwogICAgICAgICAgICAgICAgIHR5
cGUuc2l6ZSA9IDE7Ci0gICAgICAgICAgICAgICAgdHlwZS5kZWZhdWx0VmFsdWUgPSAwOwotICAg
ICAgICAgICAgICAgIHR5cGUuY3JlYXRlTGl0ZXJhbCA9IChvcmlnaW4sIHZhbHVlKSA9PiBJbnRM
aXRlcmFsLndpdGhUeXBlKG9yaWdpbiwgdmFsdWUgPj4+IDAsIHR5cGUpOwotICAgICAgICAgICAg
ICAgIHR5cGUuc3VjY2Vzc29yVmFsdWUgPSB2YWx1ZSA9PiAodmFsdWUgKyAxKSA+Pj4gMDsKLSAg
ICAgICAgICAgICAgICB0eXBlLnZhbHVlc0VxdWFsID0gKGEsIGIpID0+IGEgPT09IGI7Ci0gICAg
ICAgICAgICAgICAgdHlwZS5wb3B1bGF0ZURlZmF1bHRWYWx1ZSA9IChidWZmZXIsIG9mZnNldCkg
PT4gYnVmZmVyLnNldChvZmZzZXQsIDApOwotICAgICAgICAgICAgICAgIHR5cGUuZm9ybWF0VmFs
dWVGcm9tSW50TGl0ZXJhbCA9IHZhbHVlID0+IHZhbHVlID4+PiAwOwotICAgICAgICAgICAgICAg
IHR5cGUuZm9ybWF0VmFsdWVGcm9tVWludExpdGVyYWwgPSB2YWx1ZSA9PiB2YWx1ZSA+Pj4gMDsK
LSAgICAgICAgICAgICAgICB0eXBlLmFsbFZhbHVlcyA9IGZ1bmN0aW9uKigpIHsgCi0gICAgICAg
ICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IDB4ZmZmZmZmZmY7ICsraSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHlpZWxkIHt2YWx1ZTogaSwgbmFtZTogaX07Ci0gICAgICAgICAg
ICAgICAgfTsKKyAgICAgICAgICAgICAgICB0eXBlLnBvcHVsYXRlRGVmYXVsdFZhbHVlID0gKGJ1
ZmZlciwgb2Zmc2V0KSA9PiBidWZmZXIuc2V0KG9mZnNldCwgZmFsc2UpOwogICAgICAgICAgICAg
fSk7CiAKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUgdHlwZWRl
ZiB1Y2hhciIsCiAgICAgICAgICAgICB0eXBlID0+IHsKICAgICAgICAgICAgICAgICB0aGlzLnVj
aGFyID0gdHlwZTsKKyAgICAgICAgICAgICAgICB0eXBlLmlzUHJpbWl0aXZlID0gdHJ1ZTsKICAg
ICAgICAgICAgICAgICB0eXBlLmlzSW50ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICB0eXBlLmlz
TnVtYmVyID0gdHJ1ZTsKICAgICAgICAgICAgICAgICB0eXBlLmlzU2lnbmVkID0gZmFsc2U7CkBA
IC0xMjYsMTQ5ICsxNDMsMjkyIEBAIGNsYXNzIEludHJpbnNpY3MgewogICAgICAgICAgICAgICAg
IH07CiAgICAgICAgICAgICB9KTsKIAorCisgICAgICAgICAgICB0aGlzLl9tYXAuc2V0KAorICAg
ICAgICAgICAgICJuYXRpdmUgdHlwZWRlZiB1c2hvcnQiLAorICAgICAgICAgICAgIHR5cGUgPT4g
eworICAgICAgICAgICAgICAgICB0aGlzLnVzaG9ydCA9IHR5cGU7CisgICAgICAgICAgICAgICAg
IHR5cGUuaXNQcmltaXRpdmUgPSB0cnVlOworICAgICAgICAgICAgICAgICB0eXBlLmlzSW50ID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5pc051bWJlciA9IHRydWU7CisgICAgICAgICAg
ICAgICAgIHR5cGUuaXNTaWduZWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5jYW5S
ZXByZXNlbnQgPSB2YWx1ZSA9PiBpc0JpdHdpc2VFcXVpdmFsZW50KHZhbHVlICYgMHhmZmZmLCB2
YWx1ZSk7CisgICAgICAgICAgICAgICAgIHR5cGUuc2l6ZSA9IDE7CisgICAgICAgICAgICAgICAg
IHR5cGUuZGVmYXVsdFZhbHVlID0gMDsKKyAgICAgICAgICAgICAgICAgdHlwZS5jcmVhdGVMaXRl
cmFsID0gKG9yaWdpbiwgdmFsdWUpID0+IEludExpdGVyYWwud2l0aFR5cGUob3JpZ2luLCB2YWx1
ZSAmIDB4ZmZmZiwgdHlwZSk7CisgICAgICAgICAgICAgICAgIHR5cGUuc3VjY2Vzc29yVmFsdWUg
PSB2YWx1ZSA9PiAodmFsdWUgKyAxKSAmIDB4ZmZmZjsKKyAgICAgICAgICAgICAgICAgdHlwZS52
YWx1ZXNFcXVhbCA9IChhLCBiKSA9PiBhID09PSBiOworICAgICAgICAgICAgICAgICB0eXBlLnBv
cHVsYXRlRGVmYXVsdFZhbHVlID0gKGJ1ZmZlciwgb2Zmc2V0KSA9PiBidWZmZXIuc2V0KG9mZnNl
dCwgMCk7CisgICAgICAgICAgICAgICAgIHR5cGUuZm9ybWF0VmFsdWVGcm9tSW50TGl0ZXJhbCA9
IHZhbHVlID0+IHZhbHVlICYgMHhmZmZmOworICAgICAgICAgICAgICAgICB0eXBlLmZvcm1hdFZh
bHVlRnJvbVVpbnRMaXRlcmFsID0gdmFsdWUgPT4gdmFsdWUgJiAweGZmZmY7CisgICAgICAgICAg
ICAgICAgIHR5cGUuYWxsVmFsdWVzID0gZnVuY3Rpb24qKCkgeworICAgICAgICAgICAgICAgICAg
ICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gMHhmZmZmOyArK2kpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgeWllbGQge3ZhbHVlOiBpLCBuYW1lOiBpfTsKKyAgICAgICAgICAgICAgICAgfTsKKyAg
ICAgICAgICAgICB9KTsKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAotICAgICAgICAgICAgIm5h
dGl2ZSB0eXBlZGVmIGZsb2F0IiwKLSAgICAgICAgICAgIHR5cGUgPT4gewotICAgICAgICAgICAg
ICAgIHRoaXMuZmxvYXQgPSB0eXBlOwotICAgICAgICAgICAgICAgIHR5cGUuaXNQcmltaXRpdmUg
PSB0cnVlOwotICAgICAgICAgICAgICAgIHR5cGUuc2l6ZSA9IDE7Ci0gICAgICAgICAgICAgICAg
dHlwZS5pc0Zsb2F0aW5nID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB0eXBlLmlzTnVtYmVyID0g
dHJ1ZTsKLSAgICAgICAgICAgICAgICB0eXBlLmNhblJlcHJlc2VudCA9IHZhbHVlID0+IGlzQml0
d2lzZUVxdWl2YWxlbnQoTWF0aC5mcm91bmQodmFsdWUpLCB2YWx1ZSk7Ci0gICAgICAgICAgICAg
ICAgdHlwZS5wb3B1bGF0ZURlZmF1bHRWYWx1ZSA9IChidWZmZXIsIG9mZnNldCkgPT4gYnVmZmVy
LnNldChvZmZzZXQsIDApOwotICAgICAgICAgICAgICAgIHR5cGUuZm9ybWF0VmFsdWVGcm9tSW50
TGl0ZXJhbCA9IHZhbHVlID0+IHZhbHVlOwotICAgICAgICAgICAgICAgIHR5cGUuZm9ybWF0VmFs
dWVGcm9tVWludExpdGVyYWwgPSB2YWx1ZSA9PiB2YWx1ZTsKLSAgICAgICAgICAgICAgICB0eXBl
LmZvcm1hdFZhbHVlRnJvbUZsb2F0TGl0ZXJhbCA9IHZhbHVlID0+IE1hdGguZnJvdW5kKHZhbHVl
KTsKLSAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICJuYXRpdmUgdHlwZWRlZiB1aW50IiwK
KyAgICAgICAgICAgICB0eXBlID0+IHsKKyAgICAgICAgICAgICAgICAgdGhpcy51aW50ID0gdHlw
ZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5pc1ByaW1pdGl2ZSA9IHRydWU7CisgICAgICAgICAg
ICAgICAgIHR5cGUuaXNJbnQgPSB0cnVlOworICAgICAgICAgICAgICAgICB0eXBlLmlzTnVtYmVy
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5pc1NpZ25lZCA9IGZhbHNlOworICAgICAg
ICAgICAgICAgICB0eXBlLmNhblJlcHJlc2VudCA9IHZhbHVlID0+IGlzQml0d2lzZUVxdWl2YWxl
bnQodmFsdWUgPj4+IDAsIHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgdHlwZS5zaXplID0gMTsK
KyAgICAgICAgICAgICAgICAgdHlwZS5kZWZhdWx0VmFsdWUgPSAwOworICAgICAgICAgICAgICAg
ICB0eXBlLmNyZWF0ZUxpdGVyYWwgPSAob3JpZ2luLCB2YWx1ZSkgPT4gSW50TGl0ZXJhbC53aXRo
VHlwZShvcmlnaW4sIHZhbHVlID4+PiAwLCB0eXBlKTsKKyAgICAgICAgICAgICAgICAgdHlwZS5z
dWNjZXNzb3JWYWx1ZSA9IHZhbHVlID0+ICh2YWx1ZSArIDEpID4+PiAwOworICAgICAgICAgICAg
ICAgICB0eXBlLnZhbHVlc0VxdWFsID0gKGEsIGIpID0+IGEgPT09IGI7CisgICAgICAgICAgICAg
ICAgIHR5cGUucG9wdWxhdGVEZWZhdWx0VmFsdWUgPSAoYnVmZmVyLCBvZmZzZXQpID0+IGJ1ZmZl
ci5zZXQob2Zmc2V0LCAwKTsKKyAgICAgICAgICAgICAgICAgdHlwZS5mb3JtYXRWYWx1ZUZyb21J
bnRMaXRlcmFsID0gdmFsdWUgPT4gdmFsdWUgPj4+IDA7CisgICAgICAgICAgICAgICAgIHR5cGUu
Zm9ybWF0VmFsdWVGcm9tVWludExpdGVyYWwgPSB2YWx1ZSA9PiB2YWx1ZSA+Pj4gMDsKKyAgICAg
ICAgICAgICAgICAgdHlwZS5hbGxWYWx1ZXMgPSBmdW5jdGlvbiooKSB7CisgICAgICAgICAgICAg
ICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSAweGZmZmZmZmZmOyArK2kpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgeWllbGQge3ZhbHVlOiBpLCBuYW1lOiBpfTsKKyAgICAgICAgICAgICAg
ICAgfTsKKyAgICAgICAgICAgICB9KTsKIAogICAgICAgICB0aGlzLl9tYXAuc2V0KAotICAgICAg
ICAgICAgIm5hdGl2ZSB0eXBlZGVmIGJvb2wiLAotICAgICAgICAgICAgdHlwZSA9PiB7Ci0gICAg
ICAgICAgICAgICAgdGhpcy5ib29sID0gdHlwZTsKLSAgICAgICAgICAgICAgICB0eXBlLmlzUHJp
bWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB0eXBlLnNpemUgPSAxOwotICAgICAgICAg
ICAgICAgIHR5cGUucG9wdWxhdGVEZWZhdWx0VmFsdWUgPSAoYnVmZmVyLCBvZmZzZXQpID0+IGJ1
ZmZlci5zZXQob2Zmc2V0LCBmYWxzZSk7Ci0gICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAi
bmF0aXZlIHR5cGVkZWYgY2hhciIsCisgICAgICAgICAgICAgdHlwZSA9PiB7CisgICAgICAgICAg
ICAgICAgIHRoaXMuY2hhciA9IHR5cGU7CisgICAgICAgICAgICAgICAgIHR5cGUuaXNQcmltaXRp
dmUgPSB0cnVlOworICAgICAgICAgICAgICAgICB0eXBlLmlzSW50ID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICAgdHlwZS5pc051bWJlciA9IHRydWU7CisgICAgICAgICAgICAgICAgIHR5cGUuaXNT
aWduZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICB0eXBlLmNhblJlcHJlc2VudCA9IHZhbHVl
ID0+IGlzQml0d2lzZUVxdWl2YWxlbnQoY2FzdChJbnQ4QXJyYXksIHZhbHVlKSwgdmFsdWUpOwor
ICAgICAgICAgICAgICAgICB0eXBlLnNpemUgPSAxOworICAgICAgICAgICAgICAgICB0eXBlLmRl
ZmF1bHRWYWx1ZSA9IDA7CisgICAgICAgICAgICAgICAgIHR5cGUuY3JlYXRlTGl0ZXJhbCA9IChv
cmlnaW4sIHZhbHVlKSA9PiBJbnRMaXRlcmFsLndpdGhUeXBlKG9yaWdpbiwgY2FzdChJbnQ4QXJy
YXksIHZhbHVlKSwgdHlwZSk7CisgICAgICAgICAgICAgICAgIHR5cGUuc3VjY2Vzc29yVmFsdWUg
PSB2YWx1ZSA9PiBjYXN0KEludDhBcnJheSwgdmFsdWUgKyAxKTsKKyAgICAgICAgICAgICAgICAg
dHlwZS52YWx1ZXNFcXVhbCA9IChhLCBiKSA9PiBhID09PSBiOworICAgICAgICAgICAgICAgICB0
eXBlLnBvcHVsYXRlRGVmYXVsdFZhbHVlID0gKGJ1ZmZlciwgb2Zmc2V0KSA9PiBidWZmZXIuc2V0
KG9mZnNldCwgMCk7CisgICAgICAgICAgICAgICAgIHR5cGUuZm9ybWF0VmFsdWVGcm9tSW50TGl0
ZXJhbCA9IHZhbHVlID0+IGNhc3QoSW50OEFycmF5LCB2YWx1ZSk7CisgICAgICAgICAgICAgICAg
IHR5cGUuZm9ybWF0VmFsdWVGcm9tVWludExpdGVyYWwgPSB2YWx1ZSA9PiBjYXN0KEludDhBcnJh
eSwgdmFsdWUpOworICAgICAgICAgICAgICAgICB0eXBlLmFsbFZhbHVlcyA9IGZ1bmN0aW9uKigp
IHsKKyAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IDB4ZmY7ICsraSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGNhc3QoSW50OEFycmF5LCBp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCB7dmFsdWU6IHZhbHVlLCBuYW1lOiB2
YWx1ZX07CisgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgIH07CisgICAg
ICAgICAgICAgfSk7CisKKyAgICAgICAgdGhpcy5fbWFwLnNldCgKKyAgICAgICAgICAgICAibmF0
aXZlIHR5cGVkZWYgc2hvcnQiLAorICAgICAgICAgICAgIHR5cGUgPT4geworICAgICAgICAgICAg
ICAgICB0aGlzLnNob3J0ID0gdHlwZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5pc1ByaW1pdGl2
ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgIHR5cGUuaXNJbnQgPSB0cnVlOworICAgICAgICAg
ICAgICAgICB0eXBlLmlzTnVtYmVyID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5pc1Np
Z25lZCA9IHRydWU7CisgICAgICAgICAgICAgICAgIHR5cGUuY2FuUmVwcmVzZW50ID0gdmFsdWUg
PT4gaXNCaXR3aXNlRXF1aXZhbGVudChjYXN0KEludDE2QXJyYXksIHZhbHVlKSwgdmFsdWUpOwor
ICAgICAgICAgICAgICAgICB0eXBlLnNpemUgPSAxOworICAgICAgICAgICAgICAgICB0eXBlLmRl
ZmF1bHRWYWx1ZSA9IDA7CisgICAgICAgICAgICAgICAgIHR5cGUuY3JlYXRlTGl0ZXJhbCA9IChv
cmlnaW4sIHZhbHVlKSA9PiBJbnRMaXRlcmFsLndpdGhUeXBlKG9yaWdpbiwgY2FzdChJbnQxNkFy
cmF5LCB2YWx1ZSksIHR5cGUpOworICAgICAgICAgICAgICAgICB0eXBlLnN1Y2Nlc3NvclZhbHVl
ID0gdmFsdWUgPT4gY2FzdChJbnQxNkFycmF5LCB2YWx1ZSArIDEpOworICAgICAgICAgICAgICAg
ICB0eXBlLnZhbHVlc0VxdWFsID0gKGEsIGIpID0+IGEgPT09IGI7CisgICAgICAgICAgICAgICAg
IHR5cGUucG9wdWxhdGVEZWZhdWx0VmFsdWUgPSAoYnVmZmVyLCBvZmZzZXQpID0+IGJ1ZmZlci5z
ZXQob2Zmc2V0LCAwKTsKKyAgICAgICAgICAgICAgICAgdHlwZS5mb3JtYXRWYWx1ZUZyb21JbnRM
aXRlcmFsID0gdmFsdWUgPT4gY2FzdChJbnQxNkFycmF5LCB2YWx1ZSk7CisgICAgICAgICAgICAg
ICAgIHR5cGUuZm9ybWF0VmFsdWVGcm9tVWludExpdGVyYWwgPSB2YWx1ZSA9PiBjYXN0KEludDE2
QXJyYXksIHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgdHlwZS5hbGxWYWx1ZXMgPSBmdW5jdGlv
biooKSB7CisgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSAweGZmZmY7
ICsraSkgeworICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGNhc3QoSW50MTZB
cnJheSwgaSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQge3ZhbHVlOiB2YWx1ZSwg
bmFtZTogdmFsdWV9OworICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICB9
OworICAgICAgICAgICAgIH0pOworCisgICAgICAgIHRoaXMuX21hcC5zZXQoCisgICAgICAgICAg
ICAgIm5hdGl2ZSB0eXBlZGVmIGludCIsCisgICAgICAgICAgICAgdHlwZSA9PiB7CisgICAgICAg
ICAgICAgICAgIHRoaXMuaW50ID0gdHlwZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5pc1ByaW1p
dGl2ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgIHR5cGUuaXNJbnQgPSB0cnVlOworICAgICAg
ICAgICAgICAgICB0eXBlLmlzTnVtYmVyID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5p
c1NpZ25lZCA9IHRydWU7CisgICAgICAgICAgICAgICAgIHR5cGUuY2FuUmVwcmVzZW50ID0gdmFs
dWUgPT4gaXNCaXR3aXNlRXF1aXZhbGVudCh2YWx1ZSB8IDAsIHZhbHVlKTsKKyAgICAgICAgICAg
ICAgICAgdHlwZS5zaXplID0gMTsKKyAgICAgICAgICAgICAgICAgdHlwZS5kZWZhdWx0VmFsdWUg
PSAwOworICAgICAgICAgICAgICAgICB0eXBlLmNyZWF0ZUxpdGVyYWwgPSAob3JpZ2luLCB2YWx1
ZSkgPT4gSW50TGl0ZXJhbC53aXRoVHlwZShvcmlnaW4sIHZhbHVlIHwgMCwgdHlwZSk7CisgICAg
ICAgICAgICAgICAgIHR5cGUuc3VjY2Vzc29yVmFsdWUgPSB2YWx1ZSA9PiAodmFsdWUgKyAxKSB8
IDA7CisgICAgICAgICAgICAgICAgIHR5cGUudmFsdWVzRXF1YWwgPSAoYSwgYikgPT4gYSA9PT0g
YjsKKyAgICAgICAgICAgICAgICAgdHlwZS5wb3B1bGF0ZURlZmF1bHRWYWx1ZSA9IChidWZmZXIs
IG9mZnNldCkgPT4gYnVmZmVyLnNldChvZmZzZXQsIDApOworICAgICAgICAgICAgICAgICB0eXBl
LmZvcm1hdFZhbHVlRnJvbUludExpdGVyYWwgPSB2YWx1ZSA9PiB2YWx1ZSB8IDA7CisgICAgICAg
ICAgICAgICAgIHR5cGUuZm9ybWF0VmFsdWVGcm9tVWludExpdGVyYWwgPSB2YWx1ZSA9PiB2YWx1
ZSB8IDA7CisgICAgICAgICAgICAgICAgIHR5cGUuYWxsVmFsdWVzID0gZnVuY3Rpb24qKCkgewor
ICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gMHhmZmZmZmZmZjsgKytp
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gaSB8IDA7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgeWllbGQge3ZhbHVlOiB2YWx1ZSwgbmFtZTogdmFsdWV9OworICAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgIH0p
OworCisgICAgICAgICB0aGlzLl9tYXAuc2V0KAorICAgICAgICAgICAgICJuYXRpdmUgdHlwZWRl
ZiBoYWxmIiwKKyAgICAgICAgICAgICB0eXBlID0+IHsKKyAgICAgICAgICAgICAgICAgdGhpcy5o
YWxmID0gdHlwZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5pc1ByaW1pdGl2ZSA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgIHR5cGUuc2l6ZSA9IDE7CisgICAgICAgICAgICAgICAgIHR5cGUuaXNG
bG9hdGluZyA9IHRydWU7CisgICAgICAgICAgICAgICAgIHR5cGUuaXNOdW1iZXIgPSB0cnVlOwor
ICAgICAgICAgICAgICAgICB0eXBlLmNhblJlcHJlc2VudCA9IHZhbHVlID0+IGlzQml0d2lzZUVx
dWl2YWxlbnQoY2FzdFRvSGFsZih2YWx1ZSksIHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgdHlw
ZS5wb3B1bGF0ZURlZmF1bHRWYWx1ZSA9IChidWZmZXIsIG9mZnNldCkgPT4gYnVmZmVyLnNldChv
ZmZzZXQsIDApOworICAgICAgICAgICAgICAgICB0eXBlLmZvcm1hdFZhbHVlRnJvbUludExpdGVy
YWwgPSB2YWx1ZSA9PiB2YWx1ZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5mb3JtYXRWYWx1ZUZy
b21VaW50TGl0ZXJhbCA9IHZhbHVlID0+IHZhbHVlOworICAgICAgICAgICAgICAgICB0eXBlLmZv
cm1hdFZhbHVlRnJvbUZsb2F0TGl0ZXJhbCA9IHZhbHVlID0+IGNhc3RUb0hhbGYodmFsdWUpOwor
ICAgICAgICAgICAgIH0pOworCisgICAgICAgICB0aGlzLl9tYXAuc2V0KAorICAgICAgICAgICAg
ICJuYXRpdmUgdHlwZWRlZiBmbG9hdCIsCisgICAgICAgICAgICAgdHlwZSA9PiB7CisgICAgICAg
ICAgICAgICAgIHRoaXMuZmxvYXQgPSB0eXBlOworICAgICAgICAgICAgICAgICB0eXBlLmlzUHJp
bWl0aXZlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5zaXplID0gMTsKKyAgICAgICAg
ICAgICAgICAgdHlwZS5pc0Zsb2F0aW5nID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5p
c051bWJlciA9IHRydWU7CisgICAgICAgICAgICAgICAgIHR5cGUuY2FuUmVwcmVzZW50ID0gdmFs
dWUgPT4gaXNCaXR3aXNlRXF1aXZhbGVudChNYXRoLmZyb3VuZCh2YWx1ZSksIHZhbHVlKTsKKyAg
ICAgICAgICAgICAgICAgdHlwZS5wb3B1bGF0ZURlZmF1bHRWYWx1ZSA9IChidWZmZXIsIG9mZnNl
dCkgPT4gYnVmZmVyLnNldChvZmZzZXQsIDApOworICAgICAgICAgICAgICAgICB0eXBlLmZvcm1h
dFZhbHVlRnJvbUludExpdGVyYWwgPSB2YWx1ZSA9PiB2YWx1ZTsKKyAgICAgICAgICAgICAgICAg
dHlwZS5mb3JtYXRWYWx1ZUZyb21VaW50TGl0ZXJhbCA9IHZhbHVlID0+IHZhbHVlOworICAgICAg
ICAgICAgICAgICB0eXBlLmZvcm1hdFZhbHVlRnJvbUZsb2F0TGl0ZXJhbCA9IHZhbHVlID0+IE1h
dGguZnJvdW5kKHZhbHVlKTsKKyAgICAgICAgICAgICB9KTsKKworICAgICAgICB0aGlzLl9tYXAu
c2V0KAorICAgICAgICAgICAgICJuYXRpdmUgdHlwZWRlZiBhdG9taWNfaW50IiwKKyAgICAgICAg
ICAgICB0eXBlID0+IHsKKyAgICAgICAgICAgICAgICAgdGhpcy5hdG9taWNfaW50ID0gdHlwZTsK
KyAgICAgICAgICAgICB9KTsKKworICAgICAgICB0aGlzLl9tYXAuc2V0KAorICAgICAgICAgICAg
ICJuYXRpdmUgdHlwZWRlZiBhdG9taWNfdWludCIsCisgICAgICAgICAgICAgdHlwZSA9PiB7Cisg
ICAgICAgICAgICAgICAgIHRoaXMuYXRvbWljX3VpbnQgPSB0eXBlOworICAgICAgICAgICAgIH0p
OwogCiAgICAgICAgIGZvciAobGV0IHZlY3RvclR5cGUgb2YgVmVjdG9yRWxlbWVudFR5cGVzKSB7
Ci0gICAgICAgICAgICBmb3IgKGxldCB2ZWN0b3JTaXplIG9mIFZlY3RvckVsZW1lbnRTaXplcykK
LSAgICAgICAgICAgICAgICB0aGlzLl9tYXAuc2V0KGBuYXRpdmUgdHlwZWRlZiB2ZWN0b3I8JHt2
ZWN0b3JUeXBlfSwgJHt2ZWN0b3JTaXplfT5gLCB0eXBlID0+IHt9KTsKKyAgICAgICAgICAgIGZv
ciAobGV0IHZlY3RvclNpemUgb2YgVmVjdG9yRWxlbWVudFNpemVzKSB7CisgICAgICAgICAgICAg
ICAgdGhpcy5fbWFwLnNldChgbmF0aXZlIHR5cGVkZWYgdmVjdG9yPCR7dmVjdG9yVHlwZX0sICR7
dmVjdG9yU2l6ZX0+YCwgdHlwZSA9PiB7CisgICAgICAgICAgICAgICAgICAgIHRoaXNbYHZlY3Rv
cjwke3ZlY3RvclR5cGV9LCAke3ZlY3RvclNpemV9PmBdID0gdHlwZTsKKyAgICAgICAgICAgICAg
ICB9KTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICB0aGlz
Ll9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBvcGVyYXRvciBpbnQodWludCkiLAogICAg
ICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9
IChbdmFsdWVdKSA9PiBFUHRyLmJveCh2YWx1ZS5sb2FkVmFsdWUoKSB8IDApOwogICAgICAgICAg
ICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAi
bmF0aXZlIG9wZXJhdG9yIGludCh1Y2hhcikiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAg
ICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbdmFsdWVdKSA9PiBFUHRyLmJveCh2
YWx1ZS5sb2FkVmFsdWUoKSB8IDApOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAg
ICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIG9wZXJhdG9yIGludChmbG9h
dCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1l
bnRhdGlvbiA9IChbdmFsdWVdKSA9PiBFUHRyLmJveCh2YWx1ZS5sb2FkVmFsdWUoKSB8IDApOwog
ICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAg
ICAgICAgICAibmF0aXZlIG9wZXJhdG9yIHVpbnQoaW50KSIsCiAgICAgICAgICAgICBmdW5jID0+
IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFt2YWx1ZV0pID0+IEVQ
dHIuYm94KHZhbHVlLmxvYWRWYWx1ZSgpID4+PiAwKTsKICAgICAgICAgICAgIH0pOwotICAgICAg
ICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBvcGVyYXRv
ciB1aW50KHVjaGFyKSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBm
dW5jLmltcGxlbWVudGF0aW9uID0gKFt2YWx1ZV0pID0+IEVQdHIuYm94KHZhbHVlLmxvYWRWYWx1
ZSgpID4+PiAwKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9t
YXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBvcGVyYXRvciB1aW50KGZsb2F0KSIsCiAgICAg
ICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0g
KFt2YWx1ZV0pID0+IEVQdHIuYm94KHZhbHVlLmxvYWRWYWx1ZSgpID4+PiAwKTsKICAgICAgICAg
ICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAg
Im5hdGl2ZSBvcGVyYXRvciB1Y2hhcihpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAg
ICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW3ZhbHVlXSkgPT4gRVB0ci5ib3go
dmFsdWUubG9hZFZhbHVlKCkgJiAweGZmKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwog
ICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBvcGVyYXRvciB1Y2hh
cih1aW50KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmlt
cGxlbWVudGF0aW9uID0gKFt2YWx1ZV0pID0+IEVQdHIuYm94KHZhbHVlLmxvYWRWYWx1ZSgpICYg
MHhmZik7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNl
dCgKICAgICAgICAgICAgICJuYXRpdmUgb3BlcmF0b3IgdWNoYXIoZmxvYXQpIiwKICAgICAgICAg
ICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW3Zh
bHVlXSkgPT4gRVB0ci5ib3godmFsdWUubG9hZFZhbHVlKCkgJiAweGZmKTsKICAgICAgICAgICAg
IH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5h
dGl2ZSBvcGVyYXRvciBmbG9hdChpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAg
ICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW3ZhbHVlXSkgPT4gRVB0ci5ib3goTWF0
aC5mcm91bmQodmFsdWUubG9hZFZhbHVlKCkpKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAK
KwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBvcGVyYXRvciBm
bG9hdCh1aW50KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5j
LmltcGxlbWVudGF0aW9uID0gKFt2YWx1ZV0pID0+IEVQdHIuYm94KE1hdGguZnJvdW5kKHZhbHVl
LmxvYWRWYWx1ZSgpKSk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgCisKICAgICAgICAgdGhp
cy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUgb3BlcmF0b3IgZmxvYXQodWNoYXIpIiwK
ICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRp
b24gPSAoW3ZhbHVlXSkgPT4gRVB0ci5ib3goTWF0aC5mcm91bmQodmFsdWUubG9hZFZhbHVlKCkp
KTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAog
ICAgICAgICAgICAgIm5hdGl2ZSBpbnQgb3BlcmF0b3IrKGludCxpbnQpIiwKICAgICAgICAgICAg
IGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQs
IHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3goKGxlZnQubG9hZFZhbHVl
KCkgKyByaWdodC5sb2FkVmFsdWUoKSkgfCAwKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAK
KwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSB1aW50IG9wZXJh
dG9yKyh1aW50LHVpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAg
IGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAg
ICAgICAgRVB0ci5ib3goKGxlZnQubG9hZFZhbHVlKCkgKyByaWdodC5sb2FkVmFsdWUoKSkgPj4+
IDApOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQo
CiAgICAgICAgICAgICAibmF0aXZlIGZsb2F0IG9wZXJhdG9yKyhmbG9hdCxmbG9hdCkiLAogICAg
ICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9
IChbbGVmdCwgcmlnaHRdKSA9PgogICAgICAgICAgICAgICAgICAgICBFUHRyLmJveChNYXRoLmZy
b3VuZChsZWZ0LmxvYWRWYWx1ZSgpICsgcmlnaHQubG9hZFZhbHVlKCkpKTsKICAgICAgICAgICAg
IH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5h
dGl2ZSBpbnQgb3BlcmF0b3ItKGludCxpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAg
ICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAg
ICAgICAgICAgICAgICAgICAgRVB0ci5ib3goKGxlZnQubG9hZFZhbHVlKCkgLSByaWdodC5sb2Fk
VmFsdWUoKSkgfCAwKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlz
Ll9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSB1aW50IG9wZXJhdG9yLSh1aW50LHVpbnQp
IiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50
YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3go
KGxlZnQubG9hZFZhbHVlKCkgLSByaWdodC5sb2FkVmFsdWUoKSkgPj4+IDApOwogICAgICAgICAg
ICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAi
bmF0aXZlIGZsb2F0IG9wZXJhdG9yLShmbG9hdCxmbG9hdCkiLAogICAgICAgICAgICAgZnVuYyA9
PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRd
KSA9PgogICAgICAgICAgICAgICAgICAgICBFUHRyLmJveChNYXRoLmZyb3VuZChsZWZ0LmxvYWRW
YWx1ZSgpIC0gcmlnaHQubG9hZFZhbHVlKCkpKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAK
KwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBpbnQgb3BlcmF0
b3IqKGludCxpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewpAQCAtMjc2LDIyOSArNDM2LDIy
OSBAQCBjbGFzcyBJbnRyaW5zaWNzIHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVQdHIu
Ym94KChsZWZ0LmxvYWRWYWx1ZSgpICogcmlnaHQubG9hZFZhbHVlKCkpIHwgMCk7CiAgICAgICAg
ICAgICAgICAgfTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9t
YXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSB1aW50IG9wZXJhdG9yKih1aW50LHVpbnQpIiwK
ICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRp
b24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3goKGxl
ZnQubG9hZFZhbHVlKCkgKiByaWdodC5sb2FkVmFsdWUoKSkgPj4+IDApOwogICAgICAgICAgICAg
fSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0
aXZlIGZsb2F0IG9wZXJhdG9yKihmbG9hdCxmbG9hdCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7
CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9
PgogICAgICAgICAgICAgICAgICAgICBFUHRyLmJveChNYXRoLmZyb3VuZChsZWZ0LmxvYWRWYWx1
ZSgpICogcmlnaHQubG9hZFZhbHVlKCkpKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwog
ICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBpbnQgb3BlcmF0b3Iv
KGludCxpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMu
aW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAg
RVB0ci5ib3goKGxlZnQubG9hZFZhbHVlKCkgLyByaWdodC5sb2FkVmFsdWUoKSkgfCAwKTsKICAg
ICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAg
ICAgICAgIm5hdGl2ZSB1aW50IG9wZXJhdG9yLyh1aW50LHVpbnQpIiwKICAgICAgICAgICAgIGZ1
bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJp
Z2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3goKGxlZnQubG9hZFZhbHVlKCkg
LyByaWdodC5sb2FkVmFsdWUoKSkgPj4+IDApOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAor
CiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIGludCBvcGVyYXRv
ciYoaW50LGludCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVu
Yy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PgogICAgICAgICAgICAgICAgICAg
ICBFUHRyLmJveChsZWZ0LmxvYWRWYWx1ZSgpICYgcmlnaHQubG9hZFZhbHVlKCkpOwogICAgICAg
ICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAg
ICAibmF0aXZlIHVpbnQgb3BlcmF0b3ImKHVpbnQsdWludCkiLAogICAgICAgICAgICAgZnVuYyA9
PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRd
KSA9PgogICAgICAgICAgICAgICAgICAgICBFUHRyLmJveCgobGVmdC5sb2FkVmFsdWUoKSAmIHJp
Z2h0LmxvYWRWYWx1ZSgpKSA+Pj4gMCk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgCisKICAg
ICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUgaW50IG9wZXJhdG9yfChp
bnQsaW50KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmlt
cGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+CiAgICAgICAgICAgICAgICAgICAgIEVQ
dHIuYm94KGxlZnQubG9hZFZhbHVlKCkgfCByaWdodC5sb2FkVmFsdWUoKSk7CiAgICAgICAgICAg
ICB9KTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJu
YXRpdmUgdWludCBvcGVyYXRvcnwodWludCx1aW50KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsK
ICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+
CiAgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KChsZWZ0LmxvYWRWYWx1ZSgpIHwgcmlnaHQu
bG9hZFZhbHVlKCkpID4+PiAwKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAg
ICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBpbnQgb3BlcmF0b3JeKGludCxp
bnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVt
ZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5i
b3gobGVmdC5sb2FkVmFsdWUoKSBeIHJpZ2h0LmxvYWRWYWx1ZSgpKTsKICAgICAgICAgICAgIH0p
OwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2
ZSB1aW50IG9wZXJhdG9yXih1aW50LHVpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAg
ICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAg
ICAgICAgICAgICAgICAgICAgRVB0ci5ib3goKGxlZnQubG9hZFZhbHVlKCkgXiByaWdodC5sb2Fk
VmFsdWUoKSkgPj4+IDApOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRo
aXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIGludCBvcGVyYXRvcjw8KGludCx1aW50
KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVu
dGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+CiAgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94
KGxlZnQubG9hZFZhbHVlKCkgPDwgcmlnaHQubG9hZFZhbHVlKCkpOwogICAgICAgICAgICAgfSk7
Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZl
IHVpbnQgb3BlcmF0b3I8PCh1aW50LHVpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAg
ICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAg
ICAgICAgICAgICAgICAgICAgRVB0ci5ib3goKGxlZnQubG9hZFZhbHVlKCkgPDwgcmlnaHQubG9h
ZFZhbHVlKCkpID4+PiAwKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0
aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBpbnQgb3BlcmF0b3I+PihpbnQsdWlu
dCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1l
bnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PgogICAgICAgICAgICAgICAgICAgICBFUHRyLmJv
eChsZWZ0LmxvYWRWYWx1ZSgpID4+IHJpZ2h0LmxvYWRWYWx1ZSgpKTsKICAgICAgICAgICAgIH0p
OwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2
ZSB1aW50IG9wZXJhdG9yPj4odWludCx1aW50KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAg
ICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+CiAg
ICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KGxlZnQubG9hZFZhbHVlKCkgPj4+IHJpZ2h0Lmxv
YWRWYWx1ZSgpKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9t
YXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBpbnQgb3BlcmF0b3J+KGludCkiLAogICAgICAg
ICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChb
dmFsdWVdKSA9PiBFUHRyLmJveCh+dmFsdWUubG9hZFZhbHVlKCkpOwogICAgICAgICAgICAgfSk7
Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZl
IHVpbnQgb3BlcmF0b3J+KHVpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAg
ICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW3ZhbHVlXSkgPT4gRVB0ci5ib3goKH52YWx1
ZS5sb2FkVmFsdWUoKSkgPj4+IDApOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAg
ICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIGZsb2F0IG9wZXJhdG9yLyhm
bG9hdCxmbG9hdCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVu
Yy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PgogICAgICAgICAgICAgICAgICAg
ICBFUHRyLmJveChNYXRoLmZyb3VuZChsZWZ0LmxvYWRWYWx1ZSgpIC8gcmlnaHQubG9hZFZhbHVl
KCkpKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0
KAogICAgICAgICAgICAgIm5hdGl2ZSBib29sIG9wZXJhdG9yPT0oaW50LGludCkiLAogICAgICAg
ICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChb
bGVmdCwgcmlnaHRdKSA9PgogICAgICAgICAgICAgICAgICAgICBFUHRyLmJveChsZWZ0LmxvYWRW
YWx1ZSgpID09IHJpZ2h0LmxvYWRWYWx1ZSgpKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAK
KwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBib29sIG9wZXJh
dG9yPT0odWludCx1aW50KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAg
ICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+CiAgICAgICAgICAgICAg
ICAgICAgIEVQdHIuYm94KGxlZnQubG9hZFZhbHVlKCkgPT0gcmlnaHQubG9hZFZhbHVlKCkpOwog
ICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAg
ICAgICAgICAibmF0aXZlIGJvb2wgb3BlcmF0b3I9PShib29sLGJvb2wpIiwKICAgICAgICAgICAg
IGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQs
IHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3gobGVmdC5sb2FkVmFsdWUo
KSA9PSByaWdodC5sb2FkVmFsdWUoKSk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgCisKICAg
ICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUgYm9vbCBvcGVyYXRvcj09
KGZsb2F0LGZsb2F0KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBm
dW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+CiAgICAgICAgICAgICAgICAg
ICAgIEVQdHIuYm94KGxlZnQubG9hZFZhbHVlKCkgPT0gcmlnaHQubG9hZFZhbHVlKCkpOwogICAg
ICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAg
ICAgICAibmF0aXZlIGJvb2wgb3BlcmF0b3I8KGludCxpbnQpIiwKICAgICAgICAgICAgIGZ1bmMg
PT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0
XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3gobGVmdC5sb2FkVmFsdWUoKSA8IHJp
Z2h0LmxvYWRWYWx1ZSgpKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0
aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBib29sIG9wZXJhdG9yPCh1aW50LHVp
bnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVt
ZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5i
b3gobGVmdC5sb2FkVmFsdWUoKSA8IHJpZ2h0LmxvYWRWYWx1ZSgpKTsKICAgICAgICAgICAgIH0p
OwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2
ZSBib29sIG9wZXJhdG9yPChmbG9hdCxmbG9hdCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAg
ICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9Pgog
ICAgICAgICAgICAgICAgICAgICBFUHRyLmJveChsZWZ0LmxvYWRWYWx1ZSgpIDwgcmlnaHQubG9h
ZFZhbHVlKCkpOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21h
cC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIGJvb2wgb3BlcmF0b3I8PShpbnQsaW50KSIsCiAg
ICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9u
ID0gKFtsZWZ0LCByaWdodF0pID0+CiAgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KGxlZnQu
bG9hZFZhbHVlKCkgPD0gcmlnaHQubG9hZFZhbHVlKCkpOwogICAgICAgICAgICAgfSk7Ci0gICAg
ICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIGJvb2wg
b3BlcmF0b3I8PSh1aW50LHVpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAg
ICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAg
ICAgICAgICAgICAgRVB0ci5ib3gobGVmdC5sb2FkVmFsdWUoKSA8PSByaWdodC5sb2FkVmFsdWUo
KSk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgK
ICAgICAgICAgICAgICJuYXRpdmUgYm9vbCBvcGVyYXRvcjw9KGZsb2F0LGZsb2F0KSIsCiAgICAg
ICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0g
KFtsZWZ0LCByaWdodF0pID0+CiAgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KGxlZnQubG9h
ZFZhbHVlKCkgPD0gcmlnaHQubG9hZFZhbHVlKCkpOwogICAgICAgICAgICAgfSk7Ci0gICAgICAg
IAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIGJvb2wgb3Bl
cmF0b3I+KGludCxpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAg
IGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAg
ICAgICAgRVB0ci5ib3gobGVmdC5sb2FkVmFsdWUoKSA+IHJpZ2h0LmxvYWRWYWx1ZSgpKTsKICAg
ICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAg
ICAgICAgIm5hdGl2ZSBib29sIG9wZXJhdG9yPih1aW50LHVpbnQpIiwKICAgICAgICAgICAgIGZ1
bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJp
Z2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3gobGVmdC5sb2FkVmFsdWUoKSA+
IHJpZ2h0LmxvYWRWYWx1ZSgpKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAg
ICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBib29sIG9wZXJhdG9yPihmbG9h
dCxmbG9hdCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5p
bXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PgogICAgICAgICAgICAgICAgICAgICBF
UHRyLmJveChsZWZ0LmxvYWRWYWx1ZSgpID4gcmlnaHQubG9hZFZhbHVlKCkpOwogICAgICAgICAg
ICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAi
bmF0aXZlIGJvb2wgb3BlcmF0b3I+PShpbnQsaW50KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsK
ICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+
CiAgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KGxlZnQubG9hZFZhbHVlKCkgPj0gcmlnaHQu
bG9hZFZhbHVlKCkpOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMu
X21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIGJvb2wgb3BlcmF0b3I+PSh1aW50LHVpbnQp
IiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50
YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3go
bGVmdC5sb2FkVmFsdWUoKSA+PSByaWdodC5sb2FkVmFsdWUoKSk7CiAgICAgICAgICAgICB9KTsK
LSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUg
Ym9vbCBvcGVyYXRvcj49KGZsb2F0LGZsb2F0KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKQEAg
LTUzOCw3ICs2OTgsNyBAQCBjbGFzcyBJbnRyaW5zaWNzIHsKICAgICAgICAgZm9yIChsZXQgc2V0
dGVyIG9mIEJ1aWx0aW5WZWN0b3JTZXR0ZXIuZnVuY3Rpb25zKCkpCiAgICAgICAgICAgICB0aGlz
Ll9tYXAuc2V0KHNldHRlci50b1N0cmluZygpLCBmdW5jID0+IHNldHRlci5pbnN0YW50aWF0ZUlt
cGxlbWVudGF0aW9uKGZ1bmMpKTsKICAgICB9Ci0gICAgCisKICAgICBhZGQodGhpbmcpCiAgICAg
ewogICAgICAgICBsZXQgaW50cmluc2ljID0gdGhpcy5fbWFwLmdldCh0aGluZy50b1N0cmluZygp
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05hbWVDb250ZXh0
LmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmFtZUNvbnRleHQuanMKaW5kZXgg
MWJhYjNmYzU2MDI2MDEwNzdiM2ZhODg1YTYwNTRhYjg2MGIwYTE5My4uZGM2ODU3OGZmNTU2YjMx
MmIwOTI3ZWYzYzBkZmZhMDA2OGYxYmU2MyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvTmFtZUNvbnRleHQuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvTmFtZUNvbnRleHQuanMKQEAgLTY5LDExICs2OSwzMyBAQCBjbGFzcyBOYW1lQ29udGV4
dCB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAorICAgICAgICBpZiAodGhpbmcu
a2luZCA9PSBUeXBlKSB7CisgICAgICAgICAgICB0aGlzLl9zZXQuYWRkKHRoaW5nKTsKKyAgICAg
ICAgICAgIGlmICh0aGluZy5uYW1lID09ICJ2ZWN0b3IiKSB7CisgICAgICAgICAgICAgICAgbGV0
IGFycmF5ID0gdGhpcy5fbWFwLmdldCh0aGluZy5uYW1lKTsKKyAgICAgICAgICAgICAgICBpZiAo
IWFycmF5KSB7CisgICAgICAgICAgICAgICAgICAgIGFycmF5ID0gW107CisgICAgICAgICAgICAg
ICAgICAgIGFycmF5LmtpbmQgPSBUeXBlOworICAgICAgICAgICAgICAgICAgICB0aGlzLl9tYXAu
c2V0KHRoaW5nLm5hbWUsIGFycmF5KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgaWYgKGFycmF5LmtpbmQgIT0gVHlwZSkKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3
IFdUeXBlRXJyb3IodGhpbmcub3JpZ2luLm9yaWdpblN0cmluZywgIkNhbm5vdCByZXVzZSB0eXBl
IG5hbWUgZm9yIGZ1bmN0aW9uOiAiICsgdGhpbmcubmFtZSk7CisgICAgICAgICAgICAgICAgYXJy
YXkucHVzaCh0aGluZyk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5fbWFwLmhhcyh0aGluZy5uYW1lKSkKKyAg
ICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3IodGhpbmcub3JpZ2luLm9yaWdp
blN0cmluZywgIkR1cGxpY2F0ZSBuYW1lOiAiICsgdGhpbmcubmFtZSk7CisgICAgICAgICAgICAg
ICAgdGhpcy5fbWFwLnNldCh0aGluZy5uYW1lLCB0aGluZyk7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIGlmICh0aGlzLl9t
YXAuaGFzKHRoaW5nLm5hbWUpKQogICAgICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3IodGhp
bmcub3JpZ2luLm9yaWdpblN0cmluZywgIkR1cGxpY2F0ZSBuYW1lOiAiICsgdGhpbmcubmFtZSk7
CiAKICAgICAgICAgdGhpcy5fc2V0LmFkZCh0aGluZyk7CiAgICAgICAgIHRoaXMuX21hcC5zZXQo
dGhpbmcubmFtZSwgdGhpbmcpOworCiAgICAgfQogICAgIAogICAgIGdldChraW5kLCBuYW1lKQpA
QCAtMTAyLDYgKzEyNCwxMCBAQCBjbGFzcyBOYW1lQ29udGV4dCB7CiAgICAgICAgICAgICBmb3Ig
KGxldCBmdW5jIG9mIHRoaW5nKQogICAgICAgICAgICAgICAgIHlpZWxkIGZ1bmM7CiAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0gZWxzZSBpZiAodGhpbmcua2luZCA9PT0gVHlwZSAmJiAo
dGhpbmcgaW5zdGFuY2VvZiBBcnJheSkpIHsKKyAgICAgICAgICAgIGZvciAobGV0IHR5cGUgb2Yg
dGhpbmcpCisgICAgICAgICAgICAgICAgeWllbGQgdHlwZTsKKyAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgICAgICB5aWVsZCB0aGluZzsKICAgICB9CkBAIC0xNjMsOCArMTg5LDgg
QEAgY2xhc3MgTmFtZUNvbnRleHQgewogICAgIHsKICAgICAgICAgZm9yIChsZXQgdmFsdWUgb2Yg
dGhpcy5fbWFwLnZhbHVlcygpKSB7CiAgICAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBB
cnJheSkgewotICAgICAgICAgICAgICAgIGZvciAobGV0IGZ1bmMgb2YgdmFsdWUpCi0gICAgICAg
ICAgICAgICAgICAgIHlpZWxkIGZ1bmM7CisgICAgICAgICAgICAgICAgZm9yIChsZXQgdGhpbmcg
b2YgdmFsdWUpCisgICAgICAgICAgICAgICAgICAgIHlpZWxkIHRoaW5nOwogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgeWllbGQgdmFsdWU7CmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYW1lUmVzb2x2ZXIuanMg
Yi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYW1lUmVzb2x2ZXIuanMKaW5kZXggZjYx
NWEyZmI0ZTg3ZGMxZGViN2IwMWI1NzJmYjdhZjYyNmFiZDA5NS4uOGU0YjAyMTQwNjI5MzdiNjIx
MmVlYWJhM2IwY2ZlMGI1YTM1OWEzMyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvTmFtZVJlc29sdmVyLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL05hbWVSZXNvbHZlci5qcwpAQCAtMTIwLDEyICsxMjAsMTYgQEAgY2xhc3MgTmFtZVJlc29s
dmVyIGV4dGVuZHMgVmlzaXRvciB7CiAgICAgCiAgICAgdmlzaXRUeXBlUmVmKG5vZGUpCiAgICAg
eworICAgICAgICBzdXBlci52aXNpdFR5cGVSZWYobm9kZSk7CiAgICAgICAgIGxldCB0eXBlID0g
bm9kZS50eXBlOwogICAgICAgICBpZiAoIXR5cGUpIHsKICAgICAgICAgICAgIHR5cGUgPSB0aGlz
Ll9uYW1lQ29udGV4dC5nZXQoVHlwZSwgbm9kZS5uYW1lKTsKICAgICAgICAgICAgIGlmICghdHlw
ZSkKICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihub2RlLm9yaWdpbi5vcmln
aW5TdHJpbmcsICJDb3VsZCBub3QgZmluZCB0eXBlIG5hbWVkICIgKyBub2RlLm5hbWUpOwotICAg
ICAgICAgICAgbm9kZS50eXBlID0gdHlwZTsKKyAgICAgICAgICAgIGlmICh0eXBlIGluc3RhbmNl
b2YgQXJyYXkpCisgICAgICAgICAgICAgICAgbm9kZS5wb3NzaWJsZU92ZXJsb2FkcyA9IHR5cGU7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbm9kZS50eXBlID0gdHlwZTsKICAg
ICAgICAgfQogICAgIH0KICAgICAKQEAgLTIwOCw5ICsyMTIsNCBAQCBjbGFzcyBOYW1lUmVzb2x2
ZXIgZXh0ZW5kcyBWaXNpdG9yIHsKICAgICAgICAgCiAgICAgICAgIHN1cGVyLnZpc2l0Q2FsbEV4
cHJlc3Npb24obm9kZSk7CiAgICAgfQotCi0gICAgdmlzaXRWZWN0b3JUeXBlKG5vZGUpCi0gICAg
ewotICAgICAgICBub2RlLmVsZW1lbnRUeXBlLnZpc2l0KHRoaXMpOwotICAgIH0KIH0KZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05hdGl2ZVR5cGUuanMgYi9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYXRpdmVUeXBlLmpzCmluZGV4IGUyZDg1MWNiY2Ni
YTNhOTcyMzRjN2JkMzkyOTA3ODI5Y2E5ZTA1ZjIuLjIzODFiNWE2YjBiMDEwZTBmZGQ0ZGM1MzU1
MGE4ZWE2YjRmODM0N2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L05hdGl2ZVR5cGUuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmF0aXZl
VHlwZS5qcwpAQCAtMjUsMTEgKzI1LDE0IEBACiAidXNlIHN0cmljdCI7CiAKIGNsYXNzIE5hdGl2
ZVR5cGUgZXh0ZW5kcyBUeXBlIHsKLSAgICBjb25zdHJ1Y3RvcihvcmlnaW4sIG5hbWUpCisgICAg
Y29uc3RydWN0b3Iob3JpZ2luLCBuYW1lLCB0eXBlQXJndW1lbnRzKQogICAgIHsKKyAgICAgICAg
aWYgKCEodHlwZUFyZ3VtZW50cyBpbnN0YW5jZW9mIEFycmF5KSkKKyAgICAgICAgICAgIHRocm93
IG5ldyBFcnJvcigidHlwZSBwYXJhbWV0ZXJzIG5vdCBhcnJheTogIiArIHR5cGVBcmd1bWVudHMp
OwogICAgICAgICBzdXBlcigpOwogICAgICAgICB0aGlzLl9vcmlnaW4gPSBvcmlnaW47CiAgICAg
ICAgIHRoaXMuX25hbWUgPSBuYW1lOworICAgICAgICB0aGlzLl90eXBlQXJndW1lbnRzID0gdHlw
ZUFyZ3VtZW50czsKICAgICAgICAgdGhpcy5faXNOdW1iZXIgPSBmYWxzZTsKICAgICAgICAgdGhp
cy5faXNJbnQgPSBmYWxzZTsKICAgICAgICAgdGhpcy5faXNGbG9hdGluZyA9IGZhbHNlOwpAQCAt
MzgsNiArNDEsNyBAQCBjbGFzcyBOYXRpdmVUeXBlIGV4dGVuZHMgVHlwZSB7CiAgICAgCiAgICAg
Z2V0IG9yaWdpbigpIHsgcmV0dXJuIHRoaXMuX29yaWdpbjsgfQogICAgIGdldCBuYW1lKCkgeyBy
ZXR1cm4gdGhpcy5fbmFtZTsgfQorICAgIGdldCB0eXBlQXJndW1lbnRzKCkgeyByZXR1cm4gdGhp
cy5fdHlwZUFyZ3VtZW50czsgfQogICAgIGdldCBpc05hdGl2ZSgpIHsgcmV0dXJuIHRydWU7IH0K
ICAgICAKICAgICAvLyBXZSBsZXQgSW50cmluc2ljcy5qcyBzZXQgdGhlc2UgYXMgaXQgbGlrZXMu
CkBAIC01MiwxOSArNTYsMTggQEAgY2xhc3MgTmF0aXZlVHlwZSBleHRlbmRzIFR5cGUgewogICAg
IAogICAgIHRvU3RyaW5nKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBgbmF0aXZlIHR5cGVkZWYg
JHt0aGlzLm5hbWV9YDsKKyAgICAgICAgbGV0IHJlc3VsdCA9IGBuYXRpdmUgdHlwZWRlZiAke3Ro
aXMubmFtZX1gOworICAgICAgICBpZiAodGhpcy50eXBlQXJndW1lbnRzLmxlbmd0aCkKKyAgICAg
ICAgICAgIHJlc3VsdCArPSAiPCIgKyB0aGlzLnR5cGVBcmd1bWVudHMuam9pbigiLCIpICsgIj4i
OworICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKICAgICBzdGF0aWMgY3JlYXRl
KG9yaWdpbiwgbmFtZSwgdHlwZUFyZ3VtZW50cykKICAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBG
b3IgbmF0aXZlIHR5cGVzIGxpa2UgVGV4dHVyZTFEIHRoaXMgc2hvdWxkIHJlc29sdmUgdGhlIHR5
cGUgdG8gc29tZXRoaW5nIGNvbmNyZXRlIGJ5IGNoYW5naW5nIHRoZSB0eXBlIG5hbWUuCi0gICAg
ICAgIGlmICh0eXBlQXJndW1lbnRzLmxlbmd0aCkKLSAgICAgICAgICAgIHRocm93IG5ldyBXVHlw
ZUVycm9yKG9yaWdpbi5vcmlnaW5TdHJpbmcsIGAke25hbWV9PCR7dHlwZUFyZ3VtZW50cy5qb2lu
KCIsIil9PjogU3VwcG9ydCBmb3IgbmF0aXZlIHR5cGVzIHdpdGggdHlwZSBhcmd1bWVudHMgaXMg
Y3VycmVudGx5IHVuaW1wbGVtZW50ZWQuYCk7CisgICAgICAgIGlmIChuYW1lID09ICJ2ZWN0b3Ii
KQorICAgICAgICAgICAgcmV0dXJuIG5ldyBWZWN0b3JUeXBlKG9yaWdpbiwgbmFtZSwgdHlwZUFy
Z3VtZW50cyk7CiAKLSAgICAgICAgaWYgKGFsbFZlY3RvclR5cGVOYW1lcygpLmluZGV4T2YobmFt
ZSkgPiAtMSkKLSAgICAgICAgICAgIHJldHVybiBuZXcgVmVjdG9yVHlwZShvcmlnaW4sIG5hbWUp
OwotCi0gICAgICAgIHJldHVybiBuZXcgTmF0aXZlVHlwZShvcmlnaW4sIG5hbWUpOworICAgICAg
ICByZXR1cm4gbmV3IE5hdGl2ZVR5cGUob3JpZ2luLCBuYW1lLCB0eXBlQXJndW1lbnRzKTsKICAg
ICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1ByZXBh
cmUuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QcmVwYXJlLmpzCmluZGV4IDdi
MTYxMzllOTViODFlMmU4ZGE4MzU0YmQ4YzE3OWIxOTBiYWVmYTAuLjlmYWNhODZlMjA1NzU1YjJj
NmE2NmY0MTJiNTY5MmU5OWU3YjAzYWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL1ByZXBhcmUuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
UHJlcGFyZS5qcwpAQCAtNDAsNyArNDAsNiBAQCBsZXQgcHJlcGFyZSA9ICgoKSA9PiB7CiAgICAg
ICAgIH0KICAgICAgICAgCiAgICAgICAgIGZvbGRDb25zdGV4cHJzKHByb2dyYW0pOwotICAgICAg
ICByZW1vdmVUeXBlQXJndW1lbnRzKHByb2dyYW0pOwogCiAgICAgICAgIGxldCBuYW1lUmVzb2x2
ZXIgPSBjcmVhdGVOYW1lUmVzb2x2ZXIocHJvZ3JhbSk7CiAgICAgICAgIHJlc29sdmVOYW1lc0lu
VHlwZXMocHJvZ3JhbSwgbmFtZVJlc29sdmVyKTsKQEAgLTU0LDYgKzUzLDcgQEAgbGV0IHByZXBh
cmUgPSAoKCkgPT4gewogICAgICAgICBzeW50aGVzaXplRGVmYXVsdENvbnN0cnVjdG9yT3BlcmF0
b3IocHJvZ3JhbSk7CiAgICAgICAgIHJlc29sdmVOYW1lc0luRnVuY3Rpb25zKHByb2dyYW0sIG5h
bWVSZXNvbHZlcik7CiAgICAgICAgIHJlc29sdmVUeXBlRGVmc0luRnVuY3Rpb25zKHByb2dyYW0p
OworICAgICAgICBjaGVja1R5cGVzV2l0aEFyZ3VtZW50cyhwcm9ncmFtKTsKICAgICAgICAgCiAg
ICAgICAgIGNoZWNrKHByb2dyYW0pOwogICAgICAgICBjaGVja0xpdGVyYWxUeXBlcyhwcm9ncmFt
KTsKQEAgLTY2LDYgKzY2LDcgQEAgbGV0IHByZXBhcmUgPSAoKCkgPT4gewogICAgICAgICBjaGVj
a0xvb3BzKHByb2dyYW0pOwogICAgICAgICBjaGVja1JlY3Vyc2lvbihwcm9ncmFtKTsKICAgICAg
ICAgY2hlY2tQcm9ncmFtV3JhcHBlZChwcm9ncmFtKTsKKyAgICAgICAgY2hlY2tUeXBlc1dpdGhB
cmd1bWVudHMocHJvZ3JhbSk7CiAgICAgICAgIGZpbmRIaWdoWm9tYmllcyhwcm9ncmFtKTsKICAg
ICAgICAgcHJvZ3JhbS52aXNpdChuZXcgU3RydWN0TGF5b3V0QnVpbGRlcigpKTsKICAgICAgICAg
aW5saW5lKHByb2dyYW0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvUHJvZ3JhbS5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Byb2dyYW0uanMK
aW5kZXggMDY2MjVkOThmYzQxZTc0YzkzZGVjZTgwYjcwY2U1NWM3YWY3NGRkNS4uMTExNmM0ZjU3
NzU2MjIxNWZkZDc0MjhhMzE3NTc5YTkyOTE2NTQxNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvUHJvZ3JhbS5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9Qcm9ncmFtLmpzCkBAIC00OCwxOSArNDgsMjUgQEAgY2xhc3MgUHJvZ3JhbSBleHRl
bmRzIE5vZGUgewogICAgICAgICBpZiAoc3RhdGVtZW50IGluc3RhbmNlb2YgRnVuYykgewogICAg
ICAgICAgICAgbGV0IGFycmF5ID0gdGhpcy5fZnVuY3Rpb25zLmdldChzdGF0ZW1lbnQubmFtZSk7
CiAgICAgICAgICAgICBpZiAoIWFycmF5KQotICAgICAgICAgICAgICAgIHRoaXMuX2Z1bmN0aW9u
cy5zZXQoc3RhdGVtZW50Lm5hbWUsIGFycmF5ID0gW10pOworICAgICAgICAgICAgICAgIHRoaXMu
ZnVuY3Rpb25zLnNldChzdGF0ZW1lbnQubmFtZSwgYXJyYXkgPSBbXSk7CiAgICAgICAgICAgICBh
cnJheS5wdXNoKHN0YXRlbWVudCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoc3RhdGVtZW50IGluc3Rh
bmNlb2YgVHlwZSkKLSAgICAgICAgICAgIHRoaXMuX3R5cGVzLnNldChzdGF0ZW1lbnQubmFtZSwg
c3RhdGVtZW50KTsKLSAgICAgICAgZWxzZQorICAgICAgICB9IGVsc2UgaWYgKHN0YXRlbWVudCBp
bnN0YW5jZW9mIFR5cGUpIHsKKyAgICAgICAgICAgIGlmIChzdGF0ZW1lbnQuaXNOYXRpdmUgJiYg
c3RhdGVtZW50Lm5hbWUgPT0gInZlY3RvciIpIHsKKyAgICAgICAgICAgICAgICBsZXQgYXJyYXkg
PSB0aGlzLnR5cGVzLmdldChzdGF0ZW1lbnQubmFtZSk7CisgICAgICAgICAgICAgICAgaWYgKCFh
cnJheSkKKyAgICAgICAgICAgICAgICAgICAgdGhpcy50eXBlcy5zZXQoc3RhdGVtZW50Lm5hbWUs
IGFycmF5ID0gW10pOworICAgICAgICAgICAgICAgIGFycmF5LnB1c2goc3RhdGVtZW50KTsKKyAg
ICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHRoaXMudHlwZXMuc2V0KHN0YXRlbWVu
dC5uYW1lLCBzdGF0ZW1lbnQpOworICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHRocm93IG5l
dyBFcnJvcigiU3RhdGVtZW50IGlzIG5vdCBhIGZ1bmN0aW9uIG9yIHR5cGU6ICIgKyBzdGF0ZW1l
bnQpOwotICAgICAgICB0aGlzLl90b3BMZXZlbFN0YXRlbWVudHMucHVzaChzdGF0ZW1lbnQpOwot
ICAgICAgICB0aGlzLl9nbG9iYWxOYW1lQ29udGV4dC5hZGQoc3RhdGVtZW50KTsKKyAgICAgICAg
dGhpcy50b3BMZXZlbFN0YXRlbWVudHMucHVzaChzdGF0ZW1lbnQpOworICAgICAgICB0aGlzLmds
b2JhbE5hbWVDb250ZXh0LmFkZChzdGF0ZW1lbnQpOwogICAgIH0KICAgICAKICAgICB0b1N0cmlu
ZygpCiAgICAgewotICAgICAgICBpZiAoIXRoaXMuX3RvcExldmVsU3RhdGVtZW50cy5sZW5ndGgp
CisgICAgICAgIGlmICghdGhpcy50b3BMZXZlbFN0YXRlbWVudHMubGVuZ3RoKQogICAgICAgICAg
ICAgcmV0dXJuICIiOwogICAgICAgICByZXR1cm4gdGhpcy5fdG9wTGV2ZWxTdGF0ZW1lbnRzLmpv
aW4oIjsiKSArICI7IjsKICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9SZWN1cnNpdmVUeXBlQ2hlY2tlci5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL1JlY3Vyc2l2ZVR5cGVDaGVja2VyLmpzCmluZGV4IDkxZjc2NzQyZjYwZDE0YTM3ZTZl
NjA2YzNhYjJmOWMyYzhmYWIxMTYuLmRlM2Q1MjRiYzU0ODhjODcwNWZlYThmNjdiYWQ4N2JlY2Ji
OTdkZGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1JlY3Vyc2l2
ZVR5cGVDaGVja2VyLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1JlY3Vy
c2l2ZVR5cGVDaGVja2VyLmpzCkBAIC01MSw3ICs1MSwxMSBAQCBjbGFzcyBSZWN1cnNpdmVUeXBl
Q2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogICAgIHZpc2l0VHlwZVJlZihub2RlKQogICAgIHsK
ICAgICAgICAgc3VwZXIudmlzaXRUeXBlUmVmKG5vZGUpOwotICAgICAgICBub2RlLnR5cGUudmlz
aXQodGhpcyk7CisgICAgICAgIGlmIChub2RlLnBvc3NpYmxlT3ZlcmxvYWRzKSB7CisgICAgICAg
ICAgICBmb3IgKGxldCBvdmVybG9hZCBvZiBub2RlLnBvc3NpYmxlT3ZlcmxvYWRzKQorICAgICAg
ICAgICAgICAgIG92ZXJsb2FkLnZpc2l0KHRoaXMpOworICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgIG5vZGUudHlwZS52aXNpdCh0aGlzKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1JlbW92ZVR5cGVBcmd1bWVudHMuanMgYi9Ub29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZW1vdmVUeXBlQXJndW1lbnRzLmpzCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA5M2RiOWU2NDdjOTIxYzk1NGU4OTk4Y2UxNjc1ZGU3Y2I2MWYx
NDJiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1JlbW92ZVR5cGVBcmd1bWVudHMuanMKKysrIC9kZXYv
bnVsbApAQCAtMSw2NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLSJ1c2Ugc3RyaWN0IjsKLQotZnVuY3Rpb24gcmVtb3ZlVHlwZUFyZ3VtZW50cyhw
cm9ncmFtKQotewotICAgIGNsYXNzIFJlbW92ZVR5cGVBcmd1bWVudHMgZXh0ZW5kcyBWaXNpdG9y
IHsKLSAgICAgICAgc3RhdGljIHJlc29sdmVOYW1lQW5kQXJndW1lbnRzKG5vZGUpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGlmICghbm9kZS50eXBlQXJndW1lbnRzKQotICAgICAgICAgICAgICAg
IHJldHVybiBub2RlLm5hbWU7Ci0KLSAgICAgICAgICAgIHN3aXRjaCAobm9kZS5uYW1lKSB7Ci0g
ICAgICAgICAgICBjYXNlICJ2ZWN0b3IiOgotICAgICAgICAgICAgICAgIGlmIChub2RlLnR5cGVB
cmd1bWVudHMubGVuZ3RoICE9IDIpCi0gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBXU3lu
dGF4RXJyb3Iobm9kZS5vcmlnaW5TdHJpbmcsIGAke25vZGUubmFtZX0gc2hvdWxkIGhhdmUgMiB0
eXBlIGFyZ3VtZW50cywgZ290ICR7bm9kZS50eXBlQXJndW1lbnRzLmxlbmd0aH0uYCk7Ci0KLSAg
ICAgICAgICAgICAgICBjb25zdCBlbGVtZW50VHlwZU5hbWUgPSBub2RlLnR5cGVBcmd1bWVudHNb
MF0ubmFtZTsKLSAgICAgICAgICAgICAgICBjb25zdCBsZW5ndGhWYWx1ZSA9IG5vZGUudHlwZUFy
Z3VtZW50c1sxXS52YWx1ZTsKLQotICAgICAgICAgICAgICAgIGlmIChWZWN0b3JFbGVtZW50VHlw
ZXMuaW5kZXhPZihlbGVtZW50VHlwZU5hbWUpIDwgMCkKLSAgICAgICAgICAgICAgICAgICAgdGhy
b3cgbmV3IFdTeW50YXhFcnJvcihub2RlLm9yaWdpblN0cmluZywgYCR7ZWxlbWVudFR5cGVOYW1l
fSBpcyBub3QgYSB2YWxpZCB2ZWN0b3IgZWxlbWVudCB0eXBlLmApOwotICAgICAgICAgICAgICAg
IGlmIChWZWN0b3JFbGVtZW50U2l6ZXMuaW5kZXhPZihsZW5ndGhWYWx1ZSkgPCAwKQotICAgICAg
ICAgICAgICAgICAgICB0aHJvdyBuZXcgV1N5bnRheEVycm9yKG5vZGUub3JpZ2luU3RyaW5nLCBg
JHtsZW5ndGhWYWx1ZX0gaXMgbm90IGEgdmFsaWQgc2l6ZSBmb3IgdmVjdG9ycyB3aXRoIGVsZW1l
bnQgdHlwZSAke2VsZW1lbnRUeXBlTmFtZX0uYCk7Ci0KLSAgICAgICAgICAgICAgICByZXR1cm4g
YCR7ZWxlbWVudFR5cGVOYW1lfSR7bGVuZ3RoVmFsdWV9YDsKLSAgICAgICAgICAgIC8vIEZJWE1F
OiBGdXJ0aGVyIGNhc2VzIGZvciBtYXRyaWNlcywgdGV4dHVyZXMsIGV0Yy4KLSAgICAgICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgaWYgKG5vZGUudHlwZUFyZ3VtZW50cy5sZW5ndGgp
Ci0gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBXU3ludGF4RXJyb3IoYCR7bm9kZS5uYW1l
fSR7YXJndW1lbnRzLmpvaW4oIiwgIil9IGlzIG5vdCBhIHBlcm1pdHRlZCBnZW5lcmljIHR5cGUg
b3IgZnVuY3Rpb25gKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gbm9kZS5uYW1lOwotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgdmlzaXRUeXBlUmVmKG5vZGUpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIG5vZGUuX25hbWUgPSBSZW1vdmVUeXBlQXJndW1lbnRzLnJlc29sdmVO
YW1lQW5kQXJndW1lbnRzKG5vZGUpOwotICAgICAgICAgICAgbm9kZS5fdHlwZUFyZ3VtZW50cyA9
IG51bGw7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBwcm9ncmFtLnZpc2l0KG5ldyBSZW1vdmVU
eXBlQXJndW1lbnRzKCkpOwotfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvUmVzb2x2ZU5hbWVzLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmVz
b2x2ZU5hbWVzLmpzCmluZGV4IDJlNDAyYzhkNmMwYTM2MDk4NTYxZTAyNzVlZTUzZTc3OGZkMzg0
YjguLmI4YjUzMzQyNDU5YWU4MzlhY2Y3ZjA3YzJiYmFlYTk2ZThhNTRjZGYgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Jlc29sdmVOYW1lcy5qcworKysgYi9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXNvbHZlTmFtZXMuanMKQEAgLTMxLDggKzMxLDEz
IEBAIGZ1bmN0aW9uIGNyZWF0ZU5hbWVSZXNvbHZlcihwcm9ncmFtKQogCiBmdW5jdGlvbiByZXNv
bHZlTmFtZXNJblR5cGVzKHByb2dyYW0sIG5hbWVSZXNvbHZlcikKIHsKLSAgICBmb3IgKGxldCB0
eXBlIG9mIHByb2dyYW0udHlwZXMudmFsdWVzKCkpCi0gICAgICAgIG5hbWVSZXNvbHZlci5kb1N0
YXRlbWVudCh0eXBlKTsKKyAgICBmb3IgKGxldCB0eXBlIG9mIHByb2dyYW0udHlwZXMudmFsdWVz
KCkpIHsKKyAgICAgICAgaWYgKHR5cGUgaW5zdGFuY2VvZiBBcnJheSkgeworICAgICAgICAgICAg
Zm9yIChsZXQgY29uc3RpdHVlbnRUeXBlIG9mIHR5cGUpCisgICAgICAgICAgICAgICAgbmFtZVJl
c29sdmVyLmRvU3RhdGVtZW50KGNvbnN0aXR1ZW50VHlwZSk7CisgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgbmFtZVJlc29sdmVyLmRvU3RhdGVtZW50KHR5cGUpOworICAgIH0KIH0KIAogZnVu
Y3Rpb24gcmVzb2x2ZU5hbWVzSW5GdW5jdGlvbnMocHJvZ3JhbSwgbmFtZVJlc29sdmVyKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmVzb2x2ZU92ZXJsb2FkSW1w
bC5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Jlc29sdmVPdmVybG9hZEltcGwu
anMKaW5kZXggZDBmMWUzNGQ2MTdlYTI3MjY2NDY3YzE2MTcwNzE1NDY2NGE0NDlhZC4uN2EwOTdi
Y2E0NzBlY2I1NmE2ZWUzZGVmNTJhYWY1Zjc4YjUwNjUxMSAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvUmVzb2x2ZU92ZXJsb2FkSW1wbC5qcworKysgYi9Ub29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXNvbHZlT3ZlcmxvYWRJbXBsLmpzCkBAIC0xMDAsMyAr
MTAwLDI4IEBAIGZ1bmN0aW9uIHJlc29sdmVPdmVybG9hZEltcGwoZnVuY3Rpb25zLCBhcmd1bWVu
dFR5cGVzLCByZXR1cm5UeXBlLCBhbGxvd0VudHJ5UG9pCiAgICAgCiAgICAgcmV0dXJuIHtmYWls
dXJlczogYW1iaWd1aXR5TGlzdC5tYXAob3ZlcmxvYWQgPT4gbmV3IE92ZXJsb2FkUmVzb2x1dGlv
bkZhaWx1cmUob3ZlcmxvYWQuZnVuYywgbWVzc2FnZSkpfTsKIH0KKworZnVuY3Rpb24gcmVzb2x2
ZVR5cGVPdmVybG9hZEltcGwodHlwZXMsIHR5cGVBcmd1bWVudHMpCit7CisgICAgaWYgKCF0eXBl
cykKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJOdWxsIHR5cGVzOyB0aGF0IHNob3VsZCBoYXZl
IGJlZW4gY2F1Z2h0IGJ5IHRoZSBjYWxsZXIuIik7CisKKyAgICBsZXQgZmFpbHVyZXMgPSBbXTsK
KyAgICBsZXQgc3VjY2Vzc2VzID0gW107CisgICAgZm9yIChsZXQgdHlwZSBvZiB0eXBlcykgewor
ICAgICAgICBsZXQgb3ZlcmxvYWQgPSBpbmZlclR5cGVzRm9yVHlwZUFyZ3VtZW50cyh0eXBlLCB0
eXBlQXJndW1lbnRzKTsKKyAgICAgICAgaWYgKG92ZXJsb2FkLmZhaWx1cmUpCisgICAgICAgICAg
ICBmYWlsdXJlcy5wdXNoKG92ZXJsb2FkLmZhaWx1cmUpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBzdWNjZXNzZXMucHVzaChvdmVybG9hZCk7CisgICAgfQorICAgIAorICAgIGlmICghc3Vj
Y2Vzc2VzLmxlbmd0aCkKKyAgICAgICAgcmV0dXJuIHtmYWlsdXJlczogZmFpbHVyZXN9OworICAg
IAorICAgIGlmIChzdWNjZXNzZXMubGVuZ3RoID09IDEpCisgICAgICAgIHJldHVybiBzdWNjZXNz
ZXNbMF07CisgICAgCisgICAgbGV0IG1lc3NhZ2UgPSAiQW1iaWd1b3VzIG92ZXJsb2FkIC0gdHlw
ZXMgbXV0dWFsbHkgYXBwbGljYWJsZSI7CisgICAgcmV0dXJuIHtmYWlsdXJlczogc3VjY2Vzc2Vz
Lm1hcChvdmVybG9hZCA9PiBuZXcgVHlwZU92ZXJsb2FkUmVzb2x1dGlvbkZhaWx1cmUob3Zlcmxv
YWQudHlwZSwgbWVzc2FnZSkpfTsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL1Jlc29sdmVUeXBlRGVmcy5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL1Jlc29sdmVUeXBlRGVmcy5qcwppbmRleCA5MTQzZjhlMWUwMGEwNDk4MTRiOTBhMzQ1YzVh
ZjQ1MTQ1OWQ4NTc0Li4wNTc0YmVjZDU1MzE1MDk0NzhhMmRlZmRjMmZlN2M2OGU2MWMzZDM1IDEw
MDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXNvbHZlVHlwZURlZnMu
anMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmVzb2x2ZVR5cGVEZWZzLmpz
CkBAIC0yNyw4ICsyNywxMyBAQAogZnVuY3Rpb24gcmVzb2x2ZVR5cGVEZWZzSW5UeXBlcyhwcm9n
cmFtKQogewogICAgIGxldCByZXNvbHZlciA9IG5ldyBUeXBlRGVmUmVzb2x2ZXIoKTsKLSAgICBm
b3IgKGxldCB0eXBlIG9mIHByb2dyYW0udHlwZXMudmFsdWVzKCkpCi0gICAgICAgIHR5cGUudmlz
aXQocmVzb2x2ZXIpOworICAgIGZvciAobGV0IHR5cGUgb2YgcHJvZ3JhbS50eXBlcy52YWx1ZXMo
KSkgeworICAgICAgICBpZiAodHlwZSBpbnN0YW5jZW9mIEFycmF5KSB7CisgICAgICAgICAgICBm
b3IgKGxldCBjb25zdGl0dWVudFR5cGUgb2YgdHlwZSkKKyAgICAgICAgICAgICAgICBjb25zdGl0
dWVudFR5cGUudmlzaXQocmVzb2x2ZXIpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHR5
cGUudmlzaXQocmVzb2x2ZXIpOworICAgIH0KIH0KIAogZnVuY3Rpb24gcmVzb2x2ZVR5cGVEZWZz
SW5GdW5jdGlvbnMocHJvZ3JhbSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL1Jld3JpdGVyLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmV3cml0
ZXIuanMKaW5kZXggZDU0N2QyMDNmMGRiZjhjYWJlZTQzNzc4MDNiZDViMDg0ZTk4MDdiYy4uYTFi
NjAxNWIzNjQwNjJkMWY4NDE2M2FlYTA4MTI4MzAxNGYyNjZjNyAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmV3cml0ZXIuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvUmV3cml0ZXIuanMKQEAgLTk3LDcgKzk3LDkgQEAgY2xhc3MgUmV3cml0
ZXIgewogICAgIAogICAgIHZpc2l0VHlwZVJlZihub2RlKQogICAgIHsKLSAgICAgICAgbGV0IHJl
c3VsdCA9IG5ldyBUeXBlUmVmKG5vZGUub3JpZ2luLCBub2RlLm5hbWUpOworICAgICAgICBsZXQg
cmVzdWx0ID0gbmV3IFR5cGVSZWYobm9kZS5vcmlnaW4sIG5vZGUubmFtZSwgbm9kZS50eXBlQXJn
dW1lbnRzLm1hcChhcmd1bWVudCA9PiBhcmd1bWVudC52aXNpdCh0aGlzKSkpOworICAgICAgICBp
ZiAobm9kZS5wb3NzaWJsZU92ZXJsb2FkcykKKyAgICAgICAgICAgIHJlc3VsdC5wb3NzaWJsZU92
ZXJsb2FkcyA9IG5vZGUucG9zc2libGVPdmVybG9hZHMubWFwKG92ZXJsb2FkID0+IE5vZGUudmlz
aXQob3ZlcmxvYWQsIHRoaXMpKTsKICAgICAgICAgaWYgKG5vZGUudHlwZSkKICAgICAgICAgICAg
IHJlc3VsdC50eXBlID0gTm9kZS52aXNpdChub2RlLnR5cGUsIHRoaXMpOwogICAgICAgICByZXR1
cm4gcmVzdWx0OwpAQCAtMzgyLDcgKzM4NCw3IEBAIGNsYXNzIFJld3JpdGVyIHsKIAogICAgIHZp
c2l0VmVjdG9yVHlwZShub2RlKQogICAgIHsKLSAgICAgICAgY29uc3QgdmVjVHlwZSA9IG5ldyBW
ZWN0b3JUeXBlKG5vZGUub3JpZ2luLCBub2RlLm5hbWUpOworICAgICAgICBjb25zdCB2ZWNUeXBl
ID0gbmV3IFZlY3RvclR5cGUobm9kZS5vcmlnaW4sIG5vZGUubmFtZSwgbm9kZS50eXBlQXJndW1l
bnRzLm1hcChhcmd1bWVudCA9PiBhcmd1bWVudC52aXNpdCh0aGlzKSkpOwogICAgICAgICB2ZWNU
eXBlLl9lbGVtZW50VHlwZSA9IG5vZGUuZWxlbWVudFR5cGUudmlzaXQodGhpcyk7CiAgICAgICAg
IHJldHVybiB2ZWNUeXBlOwogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL1NQSVJWLmh0bWwgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TUElS
Vi5odG1sCmluZGV4IGM3YjM5NDBmMmIxMWJkODk2MTRmMTRhOWI1MmM0N2E1NjE2NmFiMTQuLjIw
YmU3Yzg0YzlhZjk3MGYxM2QxNTRlMmU0NGNkMzQ5ZGIzYzc0ODEgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1NQSVJWLmh0bWwKKysrIGIvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvU1BJUlYuaHRtbApAQCAtNDMsNiArNDMsNyBAQCB0ZCB7CiAgICAgPHNj
cmlwdCBzcmM9IkNoZWNrUmVjdXJzaW9uLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0i
Q2hlY2tSZWN1cnNpdmVUeXBlcy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNoZWNr
UmV0dXJucy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IkNoZWNrVHlwZXNXaXRoQXJn
dW1lbnRzLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ2hlY2tVbnJlYWNoYWJsZUNv
ZGUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDaGVja1dyYXBwZWQuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgc3JjPSJDaGVja2VyLmpzIj48L3NjcmlwdD4KQEAgLTExNiw3ICsx
MTcsNiBAQCB0ZCB7CiAgICAgPHNjcmlwdCBzcmM9IlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24u
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJSZWN1cnNpb25DaGVja2VyLmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iUmVjdXJzaXZlVHlwZUNoZWNrZXIuanMiPjwvc2NyaXB0
PgotICAgIDxzY3JpcHQgc3JjPSJSZW1vdmVUeXBlQXJndW1lbnRzLmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHNyYz0iUmVzb2x2ZU5hbWVzLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iUmVzb2x2ZU92ZXJsb2FkSW1wbC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlJl
c29sdmVQcm9wZXJ0aWVzLmpzIj48L3NjcmlwdD4KQEAgLTE0MCw2ICsxNDAsNyBAQCB0ZCB7CiAg
ICAgPHNjcmlwdCBzcmM9IlR5cGVEZWYuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJU
eXBlRGVmUmVzb2x2ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJUeXBlUmVmLmpz
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVHlwZU92ZXJsb2FkUmVzb2x1dGlvbkZhaWx1
cmUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJUeXBlZFZhbHVlLmpzIj48L3Njcmlw
dD4KICAgICA8c2NyaXB0IHNyYz0iVWludExpdGVyYWwuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgc3JjPSJVaW50TGl0ZXJhbFR5cGUuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhbmRhcmRMaWJyYXJ5LmpzIGIvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvU3RhbmRhcmRMaWJyYXJ5LmpzCmluZGV4IDA2YjI1MWNmMGEyNDgx
OWNhYjUwNjVlZjU0NDVlMTQ4OWQ1ZWFhZmMuLjgxOTBhNDM1NjkyM2E2MWU1NDg1YmRkNGYxODBk
MTM4Mzc3NDg5OGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0
YW5kYXJkTGlicmFyeS5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TdGFu
ZGFyZExpYnJhcnkuanMKQEAgLTMzLDE3ICszMyw3MCBAQCBsZXQgc3RhbmRhcmRMaWJyYXJ5ID0g
YAogbmF0aXZlIHR5cGVkZWYgdm9pZDsKIG5hdGl2ZSB0eXBlZGVmIGJvb2w7CiBuYXRpdmUgdHlw
ZWRlZiB1Y2hhcjsKK25hdGl2ZSB0eXBlZGVmIHVzaG9ydDsKIG5hdGl2ZSB0eXBlZGVmIHVpbnQ7
CituYXRpdmUgdHlwZWRlZiBjaGFyOworbmF0aXZlIHR5cGVkZWYgc2hvcnQ7CiBuYXRpdmUgdHlw
ZWRlZiBpbnQ7CituYXRpdmUgdHlwZWRlZiBoYWxmOwogbmF0aXZlIHR5cGVkZWYgZmxvYXQ7Ci0K
LS8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgdGhlc2UgdHlwZXMgdG8gSW50cmluc2ljcy5qcwot
Ly8gbmF0aXZlIHR5cGVkZWYgdXNob3J0OwotLy8gbmF0aXZlIHR5cGVkZWYgY2hhcjsKLS8vIG5h
dGl2ZSB0eXBlZGVmIHNob3J0OwotLy8gbmF0aXZlIHR5cGVkZWYgaGFsZjsKLS8vIG5hdGl2ZSB0
eXBlZGVmIGF0b21pY19pbnQ7Ci0vLyBuYXRpdmUgdHlwZWRlZiBhdG9taWNfdWludDsKK25hdGl2
ZSB0eXBlZGVmIGF0b21pY19pbnQ7CituYXRpdmUgdHlwZWRlZiBhdG9taWNfdWludDsKKworbmF0
aXZlIHR5cGVkZWYgdmVjdG9yPGJvb2wsIDI+OwordHlwZWRlZiBib29sMiA9IHZlY3Rvcjxib29s
LCAyPjsKK25hdGl2ZSB0eXBlZGVmIHZlY3Rvcjxib29sLCAzPjsKK3R5cGVkZWYgYm9vbDMgPSB2
ZWN0b3I8Ym9vbCwgMz47CituYXRpdmUgdHlwZWRlZiB2ZWN0b3I8Ym9vbCwgND47Cit0eXBlZGVm
IGJvb2w0ID0gdmVjdG9yPGJvb2wsIDQ+OworbmF0aXZlIHR5cGVkZWYgdmVjdG9yPHVjaGFyLCAy
PjsKK3R5cGVkZWYgdWNoYXIyID0gdmVjdG9yPHVjaGFyLCAyPjsKK25hdGl2ZSB0eXBlZGVmIHZl
Y3Rvcjx1Y2hhciwgMz47Cit0eXBlZGVmIHVjaGFyMyA9IHZlY3Rvcjx1Y2hhciwgMz47CituYXRp
dmUgdHlwZWRlZiB2ZWN0b3I8dWNoYXIsIDQ+OwordHlwZWRlZiB1Y2hhcjQgPSB2ZWN0b3I8dWNo
YXIsIDQ+OworbmF0aXZlIHR5cGVkZWYgdmVjdG9yPHVzaG9ydCwgMj47Cit0eXBlZGVmIHVzaG9y
dDIgPSB2ZWN0b3I8dXNob3J0LCAyPjsKK25hdGl2ZSB0eXBlZGVmIHZlY3Rvcjx1c2hvcnQsIDM+
OwordHlwZWRlZiB1c2hvcnQzID0gdmVjdG9yPHVzaG9ydCwgMz47CituYXRpdmUgdHlwZWRlZiB2
ZWN0b3I8dXNob3J0LCA0PjsKK3R5cGVkZWYgdXNob3J0NCA9IHZlY3Rvcjx1c2hvcnQsIDQ+Owor
bmF0aXZlIHR5cGVkZWYgdmVjdG9yPHVpbnQsIDI+OwordHlwZWRlZiB1aW50MiA9IHZlY3Rvcjx1
aW50LCAyPjsKK25hdGl2ZSB0eXBlZGVmIHZlY3Rvcjx1aW50LCAzPjsKK3R5cGVkZWYgdWludDMg
PSB2ZWN0b3I8dWludCwgMz47CituYXRpdmUgdHlwZWRlZiB2ZWN0b3I8dWludCwgND47Cit0eXBl
ZGVmIHVpbnQ0ID0gdmVjdG9yPHVpbnQsIDQ+OworbmF0aXZlIHR5cGVkZWYgdmVjdG9yPGNoYXIs
IDI+OwordHlwZWRlZiBjaGFyMiA9IHZlY3RvcjxjaGFyLCAyPjsKK25hdGl2ZSB0eXBlZGVmIHZl
Y3RvcjxjaGFyLCAzPjsKK3R5cGVkZWYgY2hhcjMgPSB2ZWN0b3I8Y2hhciwgMz47CituYXRpdmUg
dHlwZWRlZiB2ZWN0b3I8Y2hhciwgND47Cit0eXBlZGVmIGNoYXI0ID0gdmVjdG9yPGNoYXIsIDQ+
OworbmF0aXZlIHR5cGVkZWYgdmVjdG9yPHNob3J0LCAyPjsKK3R5cGVkZWYgc2hvcnQyID0gdmVj
dG9yPHNob3J0LCAyPjsKK25hdGl2ZSB0eXBlZGVmIHZlY3RvcjxzaG9ydCwgMz47Cit0eXBlZGVm
IHNob3J0MyA9IHZlY3RvcjxzaG9ydCwgMz47CituYXRpdmUgdHlwZWRlZiB2ZWN0b3I8c2hvcnQs
IDQ+OwordHlwZWRlZiBzaG9ydDQgPSB2ZWN0b3I8c2hvcnQsIDQ+OworbmF0aXZlIHR5cGVkZWYg
dmVjdG9yPGludCwgMj47Cit0eXBlZGVmIGludDIgPSB2ZWN0b3I8aW50LCAyPjsKK25hdGl2ZSB0
eXBlZGVmIHZlY3RvcjxpbnQsIDM+OwordHlwZWRlZiBpbnQzID0gdmVjdG9yPGludCwgMz47Citu
YXRpdmUgdHlwZWRlZiB2ZWN0b3I8aW50LCA0PjsKK3R5cGVkZWYgaW50NCA9IHZlY3RvcjxpbnQs
IDQ+OworbmF0aXZlIHR5cGVkZWYgdmVjdG9yPGhhbGYsIDI+OwordHlwZWRlZiBoYWxmMiA9IHZl
Y3RvcjxoYWxmLCAyPjsKK25hdGl2ZSB0eXBlZGVmIHZlY3RvcjxoYWxmLCAzPjsKK3R5cGVkZWYg
aGFsZjMgPSB2ZWN0b3I8aGFsZiwgMz47CituYXRpdmUgdHlwZWRlZiB2ZWN0b3I8aGFsZiwgND47
Cit0eXBlZGVmIGhhbGY0ID0gdmVjdG9yPGhhbGYsIDQ+OworbmF0aXZlIHR5cGVkZWYgdmVjdG9y
PGZsb2F0LCAyPjsKK3R5cGVkZWYgZmxvYXQyID0gdmVjdG9yPGZsb2F0LCAyPjsKK25hdGl2ZSB0
eXBlZGVmIHZlY3RvcjxmbG9hdCwgMz47Cit0eXBlZGVmIGZsb2F0MyA9IHZlY3RvcjxmbG9hdCwg
Mz47CituYXRpdmUgdHlwZWRlZiB2ZWN0b3I8ZmxvYXQsIDQ+OwordHlwZWRlZiBmbG9hdDQgPSB2
ZWN0b3I8ZmxvYXQsIDQ+OwogCiBuYXRpdmUgb3BlcmF0b3IgaW50KHVpbnQpOwogbmF0aXZlIG9w
ZXJhdG9yIGludCh1Y2hhcik7CkBAIC0xNDcsMjggKzIwMCwxMiBAQCBib29sIG9wZXJhdG9yfihi
b29sIHZhbHVlKQogewogICAgIHJldHVybiAhdmFsdWU7CiB9Ci0KLW5hdGl2ZSB0eXBlZGVmIHVj
aGFyMjsKLW5hdGl2ZSB0eXBlZGVmIHVjaGFyMzsKLW5hdGl2ZSB0eXBlZGVmIHVjaGFyNDsKLQot
bmF0aXZlIHR5cGVkZWYgdWludDI7Ci1uYXRpdmUgdHlwZWRlZiB1aW50MzsKLW5hdGl2ZSB0eXBl
ZGVmIHVpbnQ0OwotCi1uYXRpdmUgdHlwZWRlZiBpbnQyOwotbmF0aXZlIHR5cGVkZWYgaW50MzsK
LW5hdGl2ZSB0eXBlZGVmIGludDQ7Ci0KLW5hdGl2ZSB0eXBlZGVmIGZsb2F0MjsKLW5hdGl2ZSB0
eXBlZGVmIGZsb2F0MzsKLW5hdGl2ZSB0eXBlZGVmIGZsb2F0NDsKIGA7CiAKIC8vIEZJWE1FOiBP
bmNlIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGhhcyBiZWVuIHJlcGxhY2VkIHdpdGggYSBuZXcgdmVy
c2lvbiwgdGhpcyBjb21tZW50cyBzaG91bGQgYmUgcmVtb3ZlZC4KIC8vIFRoaXMgbGlzdCBpcyB1
c2VkIHRvIHJlc3RyaWN0IHRoZSBhdmFpbGFiaWxpdHkgb2YgdmVjdG9yIHR5cGVzIGF2YWlsYWJs
ZSBpbiB0aGUgbGFuZ2F1Z2UuCiAvLyBQZXJtaXNzaWJsZSB2ZWN0b3IgZWxlbWVudCB0eXBlcyBt
dXN0IGFwcGVhciBpbiB0aGlzIGxpc3QgYW5kIGluIHRoZSBzdGFuZGFyZCBsaWJyYXJ5Ci1jb25z
dCBWZWN0b3JFbGVtZW50VHlwZXMgPSBbIC8qImJvb2wiLCovICJ1Y2hhciIsIC8qImNoYXIiLCAi
dXNob3J0IiwgInNob3J0IiwqLyAidWludCIsICJpbnQiLCAvKiAiaGFsZiIsICovImZsb2F0IiBd
OworY29uc3QgVmVjdG9yRWxlbWVudFR5cGVzID0gWyAiYm9vbCIsICJ1Y2hhciIsICJjaGFyIiwg
InVzaG9ydCIsICJzaG9ydCIsICJ1aW50IiwgImludCIsICJoYWxmIiwgImZsb2F0IiBdOwogY29u
c3QgVmVjdG9yRWxlbWVudFNpemVzID0gWyAyLCAzLCA0IF07CiAKIGZ1bmN0aW9uIGFsbFZlY3Rv
clR5cGVOYW1lcygpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9T
dGF0ZW1lbnRDbG9uZXIuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TdGF0ZW1l
bnRDbG9uZXIuanMKaW5kZXggYjM5NDhjNDUwYzcxNjA5Nzc5NzVlZDRlOGU5OGVkOTljNGY3YTA1
OS4uMGQwNzE1YTk4NTRkZWYxYmZkMmE4MDhjNzQwNDExMmJhMWE0YTBjMSAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhdGVtZW50Q2xvbmVyLmpzCisrKyBiL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0YXRlbWVudENsb25lci5qcwpAQCAtNTAsNyAr
NTAsNyBAQCBjbGFzcyBTdGF0ZW1lbnRDbG9uZXIgZXh0ZW5kcyBSZXdyaXRlciB7CiAgICAgCiAg
ICAgdmlzaXROYXRpdmVUeXBlKG5vZGUpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IE5hdGl2
ZVR5cGUobm9kZS5vcmlnaW4sIG5vZGUubmFtZSk7CisgICAgICAgIHJldHVybiBuZXcgTmF0aXZl
VHlwZShub2RlLm9yaWdpbiwgbm9kZS5uYW1lLCBub2RlLnR5cGVBcmd1bWVudHMubWFwKGFyZ3Vt
ZW50ID0+IGFyZ3VtZW50LnZpc2l0KHRoaXMpKSk7CiAgICAgfQogICAgIAogICAgIHZpc2l0VHlw
ZURlZihub2RlKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3lu
dGhlc2l6ZURlZmF1bHRDb25zdHJ1Y3Rvck9wZXJhdG9yLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvU3ludGhlc2l6ZURlZmF1bHRDb25zdHJ1Y3Rvck9wZXJhdG9yLmpzCmluZGV4
IGZlZmU5YzAzZDdiMTBiMzExNmIzYjY3ZjJhZjA1N2YxNmZjMTUxNmMuLjNhM2Y3NjczODY3Yjlh
YWIwMTMyMjE4MDM1Njg3MzhjMTYzYTU2N2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL1N5bnRoZXNpemVEZWZhdWx0Q29uc3RydWN0b3JPcGVyYXRvci5qcworKysg
Yi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TeW50aGVzaXplRGVmYXVsdENvbnN0cnVj
dG9yT3BlcmF0b3IuanMKQEAgLTQ1LDYgKzQ1LDEyIEBAIGZ1bmN0aW9uIHN5bnRoZXNpemVEZWZh
dWx0Q29uc3RydWN0b3JPcGVyYXRvcihwcm9ncmFtKQogICAgICAgICAgICAgdHlwZXMuYWRkKG5v
ZGUpOwogICAgICAgICAgICAgc3VwZXIudmlzaXRFbGVtZW50YWxUeXBlKG5vZGUpOwogICAgICAg
ICB9CisKKyAgICAgICAgdmlzaXRWZWN0b3JUeXBlKG5vZGUpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHR5cGVzLmFkZChub2RlKTsKKyAgICAgICAgICAgIHN1cGVyLnZpc2l0VmVjdG9yVHlwZShu
b2RlKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHByb2dyYW0udmlzaXQobmV3IEZpbmRBbGxU
eXBlcygpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N5bnRo
ZXNpemVTdHJ1Y3RBY2Nlc3NvcnMuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9T
eW50aGVzaXplU3RydWN0QWNjZXNzb3JzLmpzCmluZGV4IGJmZTYwNDQ5NGRjNzI1YWU3ZTc0YWQ0
YTBiZmUyM2U5M2MwOTE3NzYuLmEwMTgxNDY4YTI1ZWQ0YzA5MDUwZDdiZjFkNjFmNDRlZDNhMGFh
NjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N5bnRoZXNpemVT
dHJ1Y3RBY2Nlc3NvcnMuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3lu
dGhlc2l6ZVN0cnVjdEFjY2Vzc29ycy5qcwpAQCAtNTEsNyArNTEsNyBAQCBmdW5jdGlvbiBzeW50
aGVzaXplU3RydWN0QWNjZXNzb3JzKHByb2dyYW0pCiAgICAgICAgICAgICAKICAgICAgICAgICAg
IGZ1bmN0aW9uIGNyZWF0ZVR5cGVSZWYoKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IHJldHVybiBUeXBlUmVmLmluc3RhbnRpYXRlKHR5cGUpOworICAgICAgICAgICAgICAgIHJldHVy
biBUeXBlUmVmLndyYXAodHlwZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIGxldCBpc0Nhc3QgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL1Rlc3QuaHRtbCBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rl
c3QuaHRtbAppbmRleCAxM2YzNTgyMzk5MjlkOGEzZTZhY2U1MjU0NWI5MWNhNTJkNjA2MGU0Li4w
ZGU2OTQxZDU5MDJmMGRjY2Y0ODhjOTQ1MTU1YzFmYTNhYjViYjljIDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0bWwKKysrIGIvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvVGVzdC5odG1sCkBAIC0zNyw2ICszNyw3IEBACiA8c2NyaXB0IHNyYz0i
Q2hlY2tSZWN1cnNpb24uanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkNoZWNrUmVjdXJzaXZl
VHlwZXMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkNoZWNrUmV0dXJucy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iQ2hlY2tUeXBlc1dpdGhBcmd1bWVudHMuanMiPjwvc2NyaXB0Pgog
PHNjcmlwdCBzcmM9IkNoZWNrVW5yZWFjaGFibGVDb2RlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQg
c3JjPSJDaGVja1dyYXBwZWQuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkNoZWNrZXIuanMi
Pjwvc2NyaXB0PgpAQCAtMTEwLDcgKzExMSw2IEBACiA8c2NyaXB0IHNyYz0iUmVhZE1vZGlmeVdy
aXRlRXhwcmVzc2lvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iUmVjdXJzaW9uQ2hlY2tl
ci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iUmVjdXJzaXZlVHlwZUNoZWNrZXIuanMiPjwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9IlJlbW92ZVR5cGVBcmd1bWVudHMuanMiPjwvc2NyaXB0Pgog
PHNjcmlwdCBzcmM9IlJlc29sdmVOYW1lcy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iUmVz
b2x2ZU92ZXJsb2FkSW1wbC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iUmVzb2x2ZVByb3Bl
cnRpZXMuanMiPjwvc2NyaXB0PgpAQCAtMTM0LDYgKzEzNCw3IEBACiA8c2NyaXB0IHNyYz0iVHlw
ZURlZi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iVHlwZURlZlJlc29sdmVyLmpzIj48L3Nj
cmlwdD4KIDxzY3JpcHQgc3JjPSJUeXBlUmVmLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJU
eXBlT3ZlcmxvYWRSZXNvbHV0aW9uRmFpbHVyZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0i
VHlwZWRWYWx1ZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iVWludExpdGVyYWwuanMiPjwv
c2NyaXB0PgogPHNjcmlwdCBzcmM9IlVpbnRMaXRlcmFsVHlwZS5qcyI+PC9zY3JpcHQ+CmRpZmYg
LS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0LmpzIGIvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5qcwppbmRleCBkZjQxN2RhYmY2ZDg3MTM1ZTczNWNh
OGM5YjFiZjEzYWI2NDA3NWExLi5iZmZiY2YwYjJjYjZkY2IyNTdmMWZjMzk5MmU4ZWM2NTM0NDU2
ZDljIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0LmpzCisr
KyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuanMKQEAgLTI4ODEsNyArMjg4
MSw3IEBAIHRlc3RzLnNoYWRlclR5cGVzID0gZnVuY3Rpb24oKQogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgZnJhZ21lbnQgQm9vIGJhcihGb28gc3RhZ2VJbikKICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gYm9vKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEJvbygp
OwogICAgICAgICAgICAgfQogICAgICAgICBgKSwKICAgICAgICAgKGUpID0+IGUgaW5zdGFuY2Vv
ZiBXVHlwZUVycm9yKTsKQEAgLTI5MDQsNyArMjkwNCw3IEBAIHRlc3RzLnNoYWRlclR5cGVzID0g
ZnVuY3Rpb24oKQogCiB0ZXN0cy52ZWN0b3JUeXBlU3ludGF4ID0gZnVuY3Rpb24oKQogewotICAg
IGNvbnN0IHByb2dyYW0gPSBkb1ByZXAoYAorICAgIGxldCBwcm9ncmFtID0gZG9QcmVwKGAKICAg
ICAgICAgaW50IGZvbzIoKQogICAgICAgICB7CiAgICAgICAgICAgICBpbnQyIHg7CkBAIC0yOTM5
LDcgKzI5MzksMjYgQEAgdGVzdHMudmVjdG9yVHlwZVN5bnRheCA9IGZ1bmN0aW9uKCkKICAgICBj
aGVja0ludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbzIiLCBbXSksIDQpOwog
ICAgIGNoZWNrSW50KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vMyIsIFtdKSwg
NSk7CiAgICAgY2hlY2tJbnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb280Iiwg
W10pLCA2KTsKKyAgICBjaGVja0Jvb2wocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJ2
ZWMyT3BlcmF0b3JDYXN0IiwgW10pLCB0cnVlKTsKKworICAgIHByb2dyYW0gPSBkb1ByZXAoYAor
ICAgICAgICB0eXBlZGVmIGkgPSBpbnQ7CisgICAgICAgIGludCBmb28yKCkKKyAgICAgICAgewor
ICAgICAgICAgICAgaW50MiB4OworICAgICAgICAgICAgdmVjdG9yPGksIDI+IHogPSBpbnQyKDMs
IDQpOworICAgICAgICAgICAgeCA9IHo7CisgICAgICAgICAgICByZXR1cm4geC55OworICAgICAg
ICB9CisKKyAgICAgICAgYm9vbCB2ZWMyT3BlcmF0b3JDYXN0KCkKKyAgICAgICAgeworICAgICAg
ICAgICAgaW50MiB4ID0gdmVjdG9yPGksMj4oMSwgMik7CisgICAgICAgICAgICB2ZWN0b3I8aSwg
Mj4geSA9IGludDIoMSwgMik7CisgICAgICAgICAgICByZXR1cm4geCA9PSB5ICYmIHgueCA9PSAx
ICYmIHgueSA9PSAyICYmIHkueCA9PSAxICYmIHkueSA9PSAyOworICAgICAgICB9YCk7CiAKKyAg
ICBjaGVja0ludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbzIiLCBbXSksIDQp
OwogICAgIGNoZWNrQm9vbChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgInZlYzJPcGVy
YXRvckNhc3QiLCBbXSksIHRydWUpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9UeXBlT3ZlcmxvYWRSZXNvbHV0aW9uRmFpbHVyZS5qcyBiL1Rvb2xzL1dl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL1R5cGVPdmVybG9hZFJlc29sdXRpb25GYWlsdXJlLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmQ1Y2IzZjcxMGZhMGNlMDNkMjkwMmZhMzJlZDhiMDI3NWZiNjI2MDgKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UeXBlT3ZlcmxvYWRS
ZXNvbHV0aW9uRmFpbHVyZS5qcwpAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisidXNlIHN0cmljdCI7CisKK2NsYXNzIFR5cGVPdmVy
bG9hZFJlc29sdXRpb25GYWlsdXJlIHsKKyAgICBjb25zdHJ1Y3Rvcih0eXBlLCByZWFzb24pCisg
ICAgeworICAgICAgICB0aGlzLl90eXBlID0gdHlwZTsKKyAgICAgICAgdGhpcy5fcmVhc29uID0g
cmVhc29uOworICAgIH0KKyAgICAKKyAgICBnZXQgdHlwZSgpIHsgcmV0dXJuIHRoaXMuX3R5cGU7
IH0KKyAgICBnZXQgcmVhc29uKCkgeyByZXR1cm4gdGhpcy5fcmVhc29uOyB9CisgICAgCisgICAg
dG9TdHJpbmcoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMudHlwZS50b1N0cmluZygpICsg
IiBkaWQgbm90IG1hdGNoIGJlY2F1c2U6ICIgKyB0aGlzLnJlYXNvbjsKKyAgICB9Cit9CisKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1R5cGVSZWYuanMgYi9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UeXBlUmVmLmpzCmluZGV4IGI1ZjNjMGIzZDkyNTMy
ZTA1YzY4MDA1NGExNjFmMDVlMGRkZDY0NmIuLjhiNjRlNjdiOWY1Zjc0MTUyNTJjYjI0YzkyZWVi
OWY0ODQ2YmRiZjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1R5
cGVSZWYuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVHlwZVJlZi5qcwpA
QCAtMjUsMTIgKzI1LDEzIEBACiAidXNlIHN0cmljdCI7CiAKIGNsYXNzIFR5cGVSZWYgZXh0ZW5k
cyBUeXBlIHsKLSAgICBjb25zdHJ1Y3RvcihvcmlnaW4sIG5hbWUsIHR5cGVBcmd1bWVudHMgPSBu
dWxsKQorICAgIGNvbnN0cnVjdG9yKG9yaWdpbiwgbmFtZSwgdHlwZUFyZ3VtZW50cyA9IFtdKQog
ICAgIHsKICAgICAgICAgc3VwZXIoKTsKICAgICAgICAgdGhpcy5fb3JpZ2luID0gb3JpZ2luOwog
ICAgICAgICB0aGlzLl9uYW1lID0gbmFtZTsKICAgICAgICAgdGhpcy5fdHlwZSA9IG51bGw7Cisg
ICAgICAgIHRoaXMuX3Bvc3NpYmxlT3ZlcmxvYWRzID0gbnVsbDsKICAgICAgICAgdGhpcy5fdHlw
ZUFyZ3VtZW50cyA9IHR5cGVBcmd1bWVudHM7CiAgICAgfQogICAgIApAQCAtMzgsMTQgKzM5LDEx
IEBAIGNsYXNzIFR5cGVSZWYgZXh0ZW5kcyBUeXBlIHsKICAgICB7CiAgICAgICAgIGlmICh0eXBl
IGluc3RhbmNlb2YgVHlwZVJlZikKICAgICAgICAgICAgIHJldHVybiB0eXBlOwotICAgICAgICBs
ZXQgcmVzdWx0ID0gbmV3IFR5cGVSZWYodHlwZS5vcmlnaW4sIHR5cGUubmFtZSk7Ci0gICAgICAg
IHJlc3VsdC50eXBlID0gdHlwZTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0gICAg
Ci0gICAgc3RhdGljIGluc3RhbnRpYXRlKHR5cGUpCi0gICAgewotICAgICAgICBsZXQgcmVzdWx0
ID0gbmV3IFR5cGVSZWYodHlwZS5vcmlnaW4sIHR5cGUubmFtZSk7CisgICAgICAgIGxldCByZXN1
bHQ7CisgICAgICAgIGlmICh0eXBlIGluc3RhbmNlb2YgTmF0aXZlVHlwZSkKKyAgICAgICAgICAg
IHJlc3VsdCA9IG5ldyBUeXBlUmVmKHR5cGUub3JpZ2luLCB0eXBlLm5hbWUsIHR5cGUudHlwZUFy
Z3VtZW50cyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlc3VsdCA9IG5ldyBUeXBlUmVm
KHR5cGUub3JnaW4sIHR5cGUubmFtZSk7CiAgICAgICAgIHJlc3VsdC50eXBlID0gdHlwZTsKICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC02Myw2ICs2MSw1MSBAQCBjbGFzcyBUeXBl
UmVmIGV4dGVuZHMgVHlwZSB7CiAgICAgewogICAgICAgICB0aGlzLl90eXBlID0gbmV3VHlwZTsK
ICAgICB9CisgICAgCisgICAgZ2V0IHBvc3NpYmxlT3ZlcmxvYWRzKCkKKyAgICB7CisgICAgICAg
IHJldHVybiB0aGlzLl9wb3NzaWJsZU92ZXJsb2FkczsKKyAgICB9CisKKyAgICBzZXQgcG9zc2li
bGVPdmVybG9hZHMobmV3T3ZlcmxvYWRzKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMudHlwZSkK
KyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiVHlwZVJlZnMgd2l0aCBrbm93biB0eXBlIHNo
b3VsZCBub3QgaGF2ZSBvdmVybG9hZHMuIik7CisgICAgICAgIHRoaXMuX3Bvc3NpYmxlT3Zlcmxv
YWRzID0gbmV3T3ZlcmxvYWRzOworICAgIH0KKworICAgIHJlc29sdmUocG9zc2libGVPdmVybG9h
ZHMsIHByb2dyYW0pCisgICAgeworICAgICAgICBpZiAoIXBvc3NpYmxlT3ZlcmxvYWRzKQorICAg
ICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3IodGhpcy5vcmlnaW4ub3JpZ2luU3RyaW5nLCAi
RGlkIG5vdCBmaW5kIGFueSB0eXBlcyBuYW1lZCAiICsgdGhpcy5uYW1lKTsKKworICAgICAgICBs
ZXQgZmFpbHVyZXMgPSBbXTsKKyAgICAgICAgbGV0IG92ZXJsb2FkID0gcmVzb2x2ZVR5cGVPdmVy
bG9hZEltcGwocG9zc2libGVPdmVybG9hZHMsIHRoaXMudHlwZUFyZ3VtZW50cyk7CisKKyAgICAg
ICAgaWYgKCFvdmVybG9hZC50eXBlKSB7CisgICAgICAgICAgICBmYWlsdXJlcy5wdXNoKC4uLm92
ZXJsb2FkLmZhaWx1cmVzKTsKKyAgICAgICAgICAgIGxldCBtZXNzYWdlID0gIkRpZCBub3QgZmlu
ZCB0eXBlIG5hbWVkICIgKyB0aGlzLm5hbWUgKyAiIGZvciB0eXBlIGFyZ3VtZW50cyAiOworICAg
ICAgICAgICAgbWVzc2FnZSArPSAiKCIgKyB0aGlzLnR5cGVBcmd1bWVudHMgKyAiKSI7CisgICAg
ICAgICAgICBpZiAoZmFpbHVyZXMubGVuZ3RoKQorICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0g
IiwgYnV0IGNvbnNpZGVyZWQ6XG4iICsgZmFpbHVyZXMuam9pbigiXG4iKQorICAgICAgICAgICAg
dGhyb3cgbmV3IFdUeXBlRXJyb3IodGhpcy5vcmlnaW4ub3JpZ2luU3RyaW5nLCBtZXNzYWdlKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy50eXBlQXJndW1l
bnRzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBsZXQgdHlwZUFyZ3VtZW50ID0gdGhpcy50
eXBlQXJndW1lbnRzW2ldOworICAgICAgICAgICAgbGV0IHJlc29sdmVkVHlwZUFyZ3VtZW50ID0g
b3ZlcmxvYWQudHlwZS50eXBlQXJndW1lbnRzW2ldOworICAgICAgICAgICAgbGV0IHJlc3VsdCA9
IHR5cGVBcmd1bWVudC5lcXVhbHNXaXRoQ29tbWl0KHJlc29sdmVkVHlwZUFyZ3VtZW50KTsKKyAg
ICAgICAgICAgIGlmICghcmVzdWx0KQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigi
QXQgIiArIHRoaXMub3JpZ2luLm9yaWdpblN0cmluZyArICIgYXJndW1lbnQgdHlwZXMgZm9yIFR5
cGUgYW5kIFR5cGVSZWYgbm90IGVxdWFsOiBhcmd1bWVudCB0eXBlID0gIiArIHR5cGVBcmd1bWVu
dCArICIsIHJlc29sdmVkIHR5cGUgYXJndW1lbnQgPSAiICsgcmVzb2x2ZWRUeXBlQXJndW1lbnQp
OworICAgICAgICAgICAgaWYgKHJlc29sdmVkVHlwZUFyZ3VtZW50LmNvbnN0cnVjdG9yLm5hbWUg
PT0gIkdlbmVyaWNMaXRlcmFsIikgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9IHR5cGVBcmd1
bWVudC50eXBlLmVxdWFsc1dpdGhDb21taXQocmVzb2x2ZWRUeXBlQXJndW1lbnQudHlwZSk7Cisg
ICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpCisgICAgICAgICAgICAgICAgICAgIHRocm93IG5l
dyBFcnJvcigiQXQgIiArIHRoaXMub3JpZ2luLm9yaWdpblN0cmluZyArICIgYXJndW1lbnQgdHlw
ZXMgZm9yIFR5cGUgYW5kIFR5cGVSZWYgbm90IGVxdWFsOiBhcmd1bWVudCB0eXBlID0gIiArIHR5
cGVBcmd1bWVudCArICIsIHJlc29sdmVkIHR5cGUgYXJndW1lbnQgPSAiICsgcmVzb2x2ZWRUeXBl
QXJndW1lbnQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICB9Cisg
ICAgICAgIHRoaXMudHlwZSA9IG92ZXJsb2FkLnR5cGU7CisgICAgfQogCiAgICAgZ2V0IHVuaWZ5
Tm9kZSgpCiAgICAgewpAQCAtOTksNyArMTQyLDEwIEBAIGNsYXNzIFR5cGVSZWYgZXh0ZW5kcyBU
eXBlIHsKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5uYW1lKQogICAgICAgICAgICAgcmV0dXJu
IHRoaXMudHlwZS50b1N0cmluZygpOwotICAgICAgICByZXR1cm4gdGhpcy5uYW1lOworICAgICAg
ICBsZXQgcmVzdWx0ID0gdGhpcy5uYW1lOworICAgICAgICBpZiAodGhpcy50eXBlQXJndW1lbnRz
Lmxlbmd0aCA+IDApCisgICAgICAgICAgICByZXN1bHQgKz0gIjwiICsgdGhpcy50eXBlQXJndW1l
bnRzLm1hcChhcmd1bWVudCA9PiBhcmd1bWVudC50b1N0cmluZygpKS5qb2luKCIsIikgKyAiPiI7
CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9VbmlmaWNhdGlvbkNvbnRleHQuanMgYi9Ub29scy9XZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9VbmlmaWNhdGlvbkNvbnRleHQuanMKaW5kZXggMmY3MTU0N2Iw
YWZiZTE4MDM3OGYzNzk5NjIzMTg2MmEyYjkxYTgyZS4uMzgxOTE2OTcyMjNlZjcyMWE1Mzc5MTRi
MzY5ODk3Njc4MWZlNmU2ZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvVW5pZmljYXRpb25Db250ZXh0LmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL1VuaWZpY2F0aW9uQ29udGV4dC5qcwpAQCAtOTIsNiArOTIsMTkgQEAgY2xhc3MgVW5pZmlj
YXRpb25Db250ZXh0IHsKICAgICAKICAgICB2ZXJpZnkoKQogICAgIHsKKyAgICAgICAgLy8gV2Ug
ZG8gYSB0d28tcGhhc2UgcHJlLXZlcmlmaWNhdGlvbi4gVGhpcyBnaXZlcyBsaXRlcmFscyBhIGNo
YW5jZSB0byBzZWxlY3QgYSBtb3JlIHNwZWNpZmljIHR5cGUuCisgICAgICAgIGxldCBwcmVwYXJh
dGlvbnMgPSBbXTsKKyAgICAgICAgZm9yIChsZXQgbm9kZSBvZiB0aGlzLm5vZGVzKSB7CisgICAg
ICAgICAgICBsZXQgcHJlcGFyYXRpb24gPSBub2RlLnByZXBhcmVUb1ZlcmlmeSh0aGlzKTsKKyAg
ICAgICAgICAgIGlmIChwcmVwYXJhdGlvbikKKyAgICAgICAgICAgICAgICBwcmVwYXJhdGlvbnMu
cHVzaChwcmVwYXJhdGlvbik7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChsZXQgcHJlcGFyYXRp
b24gb2YgcHJlcGFyYXRpb25zKSB7CisgICAgICAgICAgICBsZXQgcmVzdWx0ID0gcHJlcGFyYXRp
b24oKTsKKyAgICAgICAgICAgIGlmICghcmVzdWx0LnJlc3VsdCkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgICAgICB9CisKICAgICAgICAgZm9yIChsZXQgdHlwZUFyZ3VtZW50
IG9mIHRoaXMudHlwZUFyZ3VtZW50cygpKSB7CiAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gdHlw
ZUFyZ3VtZW50LnZlcmlmeUFzQXJndW1lbnQodGhpcyk7CiAgICAgICAgICAgICBpZiAoIXJlc3Vs
dC5yZXN1bHQpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9WZWN0
b3JUeXBlLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVmVjdG9yVHlwZS5qcwpp
bmRleCA1MDE0YzY3MWEwNzg4MjAwMmMyMzRiYjMyZjE3Yzg4NjBlZmZjMWM2Li5kZjBjYmMyYzcz
MDhmNDU0MTNjYmNjMjhkODk2MjFiYzAzYWIyNjA0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9WZWN0b3JUeXBlLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL1ZlY3RvclR5cGUuanMKQEAgLTI1LDE5ICsyNSwxNCBAQAogInVzZSBzdHJpY3Qi
OwogCiBjbGFzcyBWZWN0b3JUeXBlIGV4dGVuZHMgTmF0aXZlVHlwZSB7Ci0gICAgY29uc3RydWN0
b3Iob3JpZ2luLCBuYW1lKQorICAgIGNvbnN0cnVjdG9yKG9yaWdpbiwgbmFtZSwgdHlwZUFyZ3Vt
ZW50cykKICAgICB7Ci0gICAgICAgIHN1cGVyKG9yaWdpbiwgbmFtZSk7Ci0gICAgICAgIGNvbnN0
IG1hdGNoID0gL14oW0Etel0rKShbMC05XSkkLy5leGVjKG5hbWUpOwotICAgICAgICBpZiAoIW1h
dGNoKQotICAgICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3Iob3JpZ2luLm9yaWdpblN0cmlu
ZywgYCR7bmFtZX0gZG9lc24ndCBtYXRjaCB0aGUgZm9ybWF0IGZvciB2ZWN0b3IgdHlwZSBuYW1l
cy4nYCk7Ci0KLSAgICAgICAgdGhpcy5fZWxlbWVudFR5cGUgPSBuZXcgVHlwZVJlZihvcmlnaW4s
IG1hdGNoWzFdKTsKLSAgICAgICAgdGhpcy5fbnVtRWxlbWVudHNWYWx1ZSA9IHBhcnNlSW50KG1h
dGNoWzJdKTsKKyAgICAgICAgc3VwZXIob3JpZ2luLCBuYW1lLCB0eXBlQXJndW1lbnRzKTsKICAg
ICB9CiAKLSAgICBnZXQgZWxlbWVudFR5cGUoKSB7IHJldHVybiB0aGlzLl9lbGVtZW50VHlwZTsg
fQotICAgIGdldCBudW1FbGVtZW50c1ZhbHVlKCkgeyByZXR1cm4gdGhpcy5fbnVtRWxlbWVudHNW
YWx1ZTsgfQorICAgIGdldCBlbGVtZW50VHlwZSgpIHsgcmV0dXJuIHRoaXMudHlwZUFyZ3VtZW50
c1swXTsgfQorICAgIGdldCBudW1FbGVtZW50cygpIHsgcmV0dXJuIHRoaXMudHlwZUFyZ3VtZW50
c1sxXTsgfQorICAgIGdldCBudW1FbGVtZW50c1ZhbHVlKCkgeyByZXR1cm4gdGhpcy5udW1FbGVt
ZW50cy52YWx1ZTsgfQogICAgIGdldCBzaXplKCkgeyByZXR1cm4gdGhpcy5lbGVtZW50VHlwZS5z
aXplICogdGhpcy5udW1FbGVtZW50c1ZhbHVlOyB9CiAKICAgICB1bmlmeUltcGwodW5pZmljYXRp
b25Db250ZXh0LCBvdGhlcikKQEAgLTU5LDcgKzU0LDcgQEAgY2xhc3MgVmVjdG9yVHlwZSBleHRl
bmRzIE5hdGl2ZVR5cGUgewogCiAgICAgdG9TdHJpbmcoKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGBuYXRpdmUgdHlwZWRlZiAke3RoaXMuZWxlbWVudFR5cGV9JHt0aGlzLm51bUVsZW1lbnRzVmFs
dWV9YDsKKyAgICAgICAgcmV0dXJuIGBuYXRpdmUgdHlwZWRlZiB2ZWN0b3I8JHt0aGlzLmVsZW1l
bnRUeXBlfSwgJHt0aGlzLm51bUVsZW1lbnRzVmFsdWV9PmA7CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9WaXNpdG9yLmpzIGIvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvVmlzaXRvci5qcwppbmRleCA3ZDM4N2IyNWYyNTg5Yjg3Mzkx
OGFmMmY0NGMyNDM0YWQ2NTg3NDdmLi42MGRmY2ViZjFhZTFkNTk4ZDMyOTgwZDU2ZDc4NGYxNDUz
OGQ1NTNjIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9WaXNpdG9y
LmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Zpc2l0b3IuanMKQEAgLTY4
LDEwICs2OCwxNCBAQCBjbGFzcyBWaXNpdG9yIHsKICAgICAKICAgICB2aXNpdFR5cGVSZWYobm9k
ZSkKICAgICB7CisgICAgICAgIGZvciAobGV0IHR5cGVBcmd1bWVudCBvZiBub2RlLnR5cGVBcmd1
bWVudHMpCisgICAgICAgICAgICB0eXBlQXJndW1lbnQudmlzaXQodGhpcyk7CiAgICAgfQogICAg
IAogICAgIHZpc2l0TmF0aXZlVHlwZShub2RlKQogICAgIHsKKyAgICAgICAgZm9yIChsZXQgdHlw
ZUFyZ3VtZW50IG9mIG5vZGUudHlwZUFyZ3VtZW50cykKKyAgICAgICAgICAgIHR5cGVBcmd1bWVu
dC52aXNpdCh0aGlzKTsKICAgICB9CiAgICAgCiAgICAgdmlzaXRUeXBlRGVmKG5vZGUpCkBAIC0z
MjcsNiArMzMxLDcgQEAgY2xhc3MgVmlzaXRvciB7CiAgICAgdmlzaXRWZWN0b3JUeXBlKG5vZGUp
CiAgICAgewogICAgICAgICBub2RlLmVsZW1lbnRUeXBlLnZpc2l0KHRoaXMpOworICAgICAgICBu
b2RlLm51bUVsZW1lbnRzLnZpc2l0KHRoaXMpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvaW5kZXguaHRtbCBiL1Rvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL2luZGV4Lmh0bWwKaW5kZXggNGM5M2EzM2U2YTM4NjYyZThiYTFlODQyNDAz
ZDRjMDJkNWU5ZjlkZi4uOWMzMWNlOWY0YTg0NzY0OTQ1NmU1NDc1MDdiMGIzMmUwNTZhY2IxYiAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvaW5kZXguaHRtbAorKysg
Yi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9pbmRleC5odG1sCkBAIC0zOCw2ICszOCw3
IEBACiA8c2NyaXB0IHNyYz0iQ2hlY2tSZWN1cnNpdmVUeXBlcy5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0IHNyYz0iQ2hlY2tSZXR1cm5zLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJDaGVja1Vu
cmVhY2hhYmxlQ29kZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iQ2hlY2tUeXBlc1dpdGhB
cmd1bWVudHMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkNoZWNrV3JhcHBlZC5qcyI+PC9z
Y3JpcHQ+CiA8c2NyaXB0IHNyYz0iQ2hlY2tlci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0i
Q2xvbmVQcm9ncmFtLmpzIj48L3NjcmlwdD4KQEAgLTExMCw3ICsxMTEsNiBAQAogPHNjcmlwdCBz
cmM9IlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9
IlJlY3Vyc2lvbkNoZWNrZXIuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlJlY3Vyc2l2ZVR5
cGVDaGVja2VyLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJSZW1vdmVUeXBlQXJndW1lbnRz
LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJSZXNvbHZlTmFtZXMuanMiPjwvc2NyaXB0Pgog
PHNjcmlwdCBzcmM9IlJlc29sdmVPdmVybG9hZEltcGwuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBz
cmM9IlJlc29sdmVQcm9wZXJ0aWVzLmpzIj48L3NjcmlwdD4KQEAgLTEzNCw2ICsxMzQsNyBAQAog
PHNjcmlwdCBzcmM9IlR5cGVEZWYuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlR5cGVEZWZS
ZXNvbHZlci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iVHlwZVJlZi5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iVHlwZU92ZXJsb2FkUmVzb2x1dGlvbkZhaWx1cmUuanMiPjwvc2NyaXB0
PgogPHNjcmlwdCBzcmM9IlR5cGVkVmFsdWUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlVp
bnRMaXRlcmFsLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJVaW50TGl0ZXJhbFR5cGUuanMi
Pjwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347863</attachid>
            <date>2018-08-22 15:48:59 -0700</date>
            <delta_ts>2018-08-23 12:52:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188773-20180822154859.patch</filename>
            <type>text/plain</type>
            <size>80662</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1MTgzCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYjIyOTRjOGE5MzFkYTYyNDAwZGNmZjkyODJiMTA1YWNk
NjI3YTc1MC4uZDFhODU5ODgzNmJhOTk1ZGNlYjQ1ZTNjMjE1YjhiMmExMjRkOTdlOSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEz
NCBAQAorMjAxOC0wOC0yMiAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29t
PgorCisgICAgICAgIFtXSExTTF0gQWxsb3cgbmF0aXZlIHR5cGVzIHRvIGhhdmUgdHlwZSBhcmd1
bWVudHMgKGxpa2UgInZlY3RvcjxmbG9hdCwgND4iKQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4NzczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQmVmb3JlIHRoaXMgcGF0Y2gsIGl0IHdhcyBpbXBvc3Np
YmxlIHRvIHJlcHJlc2VudCAibmF0aXZlIHR5cGVkZWYgdmVjdG9yPGZsb2F0LCA0PiIgYmVjYXVz
ZSBOYXRpdmVUeXBlcyBjb3VsZG4ndCBoYXZlCisgICAgICAgIHR5cGVBcmd1bWVudHMuCisKKyAg
ICAgICAgUHJldmlvdXNseSwgdGhlIHdheSB0byBpZGVudGlmeSBhIHR5cGUgd2FzIHN0cmljdGx5
IGJ5IG5hbWUsIHdoaWNoIHdhcyByZXByZXNlbnRlZCBieSBhIHN0cmluZy4gVGhlcmVmb3JlLCB3
aGVuIHNvbWV0aGluZyBsaWtlCisgICAgICAgICJ2ZWN0b3I8aW50LCAzPiIgd2FzIHBhcnNlZCwg
aXQgd291bGQgcHJvZHVjZSBhIFR5cGVSZWYgd2l0aCB0aGUgbmFtZSAidmVjdG9yIiBhbmQgdHlw
ZUFyZ3VtZW50cyBbVHlwZVJlZiwgSW50TGl0ZXJhbF0uIFRoZW4sCisgICAgICAgIHRoZXJlIHdh
cyBhIHBhc3MgdG8gY29udmVydCB0aGUgVHlwZVJlZiB0byBoYXZlIHRoZSBuYW1lICJpbnQzIiBh
bmQgbm8gdHlwZUFyZ3VtZW50cy4gQWZ0ZXIgdGhpcyB0cmFuc2Zvcm1hdGlvbiwgZWFjaCB0eXBl
IGNvdWxkCisgICAgICAgIGJlIHVuaXF1ZWx5IGlkZW50aWZpZWQgYnkgbmFtZS4gVGhhdCBuYW1l
IHdhcyB0aGVuIG1hdGNoZWQgdG8gdGhlIHN0cmluZy1vbmx5IE5hdGl2ZVR5cGUgbmFtZS4KKwor
ICAgICAgICBUaGlzIGlzIG9rYXkgZm9yIHZlY3RvcnMgYW5kIG1hdHJpY2VzLCBidXQgaXQgaXMg
dW5mb3J0dW5hdGUgZm9yIHRleHR1cmVzIChlLmcuIFRleHR1cmUyRDxmbG9hdDQ+KSBiZWNhdXNl
IHRoZXkgZG9uJ3QgaGF2ZSBhbnkKKyAgICAgICAgbmF0dXJhbCBzdHJpbmctb25seSBuYW1lLiBJ
biBhZGRpdGlvbiwgdGhlIGNhbm9uaWNhbGl6YXRpb24gd291bGQgaGF2ZSB0byBiZSBtYWRlIGF3
YXJlIG9mIHRoZSBmYWN0IHRoYXQgVGV4dHVyZTJEPGZsb2F0ND4gaXMKKyAgICAgICAgdGhlIHNh
bWUgYXMgVGV4dHVyZTJEPHZlY3RvcjxmbG9hdCwgND4+LiBTaW1pbGFybHksIGFuIGF1dGhvciBt
YXkgd2lzaCB0byB0eXBlZGVmIGZsb2F0NCB0byBhIGRpZmZlcmVudCBuYW1lLgorCisgICAgICAg
IEl0IHdvdWxkIGJlIHBvc3NpYmxlIHRvIG1hbmdsZSB0aGUgbmFtZXMgb2YgdGhlIHRleHR1cmUg
dHlwZXMgdG8gc29tZXRoaW5nIHVuaXF1ZSwgYnV0IHRoZW4gd2UgbG9zZSBpbmZvcm1hdGlvbiBh
Ym91dCB0aGUgaW5uZXIKKyAgICAgICAgdHlwZS4gRm9yIGV4YW1wbGUsIGlmIHdlIGRpZCB0aGlz
LCBWaXNpdG9yIHdvdWxkbid0IHJlY3Vyc2UgaW50byB0aGUgZmxvYXQ0IHdoZW4gZW5jb3VudGVy
aW5nIFRleHR1cmUyRDxmbG9hdDQ+IGJlY2F1c2UgdGhhdAorICAgICAgICBpbmZvcm1hdGlvbiB3
b3VsZCBiZSBsb3N0LiBUaGlzIGNvdWxkIHBvdGVudGlhbGx5IG1ha2Ugb3BlcmF0aW9ucyBsaWtl
IHByb2dyYW1XaXRoVW5uZWNlc3NhcnlUaGluZ3NSZW1vdmVkKCkgbW9yZSBkaWZmaWN1bHQgdG8K
KyAgICAgICAgaW1wbGVtZW50IGluIHRoZSBmdXR1cmUuCisKKyAgICAgICAgU28sIGl0IHdvdWxk
IGJlIGJldHRlciB0byBoYXZlIGVhY2ggdHlwZSB1bmlxdWVseSBpZGVudGlmaWVkIGJ5IChuYW1l
LCB0eXBlQXJndW1lbnRzKS4gVHlwZVJlZiB3aWxsIHRoZXJlZm9yZSBhbHNvIGhhdmUKKyAgICAg
ICAgdHlwZUFyZ3VtZW50cyB3aGljaCBhcmUgdXNlZCB0byBkZXRlcm1pbmUgd2hpY2ggdHlwZSBp
dCBpcyByZWZlcmVuY2luZy4gQWZ0ZXIgdGhpcyBhbmFseXNpcyBpcyBkb25lIHRvIGRldGVybWlu
ZSB3aGF0IGVhY2gKKyAgICAgICAgVHlwZVJlZiBpcyByZWZlcmVuY2luZywgc3Vic2VxdWVudCBw
YXNzZXMgc2hvdWxkbid0IGNhcmUgYWJvdXQgdGhlIHR5cGVBcmd1bWVudHMgYW5kIHNob3VsZCBv
bmx5IGNhcmUgYWJvdXQgdGhlIC50eXBlIGZpZWxkCisgICAgICAgIHdoaWNoIGhhZCBiZWVuIHNl
dCAtIHRoaXMgd2FzIHRydWUgZXZlbiBiZWZvcmUgdGhpcyBwYXRjaC4KKworICAgICAgICBUaGlz
IG1lYW5zIHRoYXQgTmFtZUNvbnRleHQgaGFzIHRvIGFnZ3JlZ2F0ZSB0eXBlcyB0aGF0IGFjY2Vw
dCB0eXBlQXJndW1lbnRzIGludG8gYXJyYXlzLCB3aGVyZSBlYWNoIGFycmF5IGhvbGRzIGFsbCB0
aGUgVHlwZXMKKyAgICAgICAgdGhhdCBoYXZlIHRoZSBzYW1lIG5hbWUgYnV0IGRpZmZlcmVudCB0
eXBlQXJndW1lbnRzLiBUaGVuLCB3aGVuIHdlIG5lZWQgdG8gbWF0Y2ggYSBUeXBlUmVmIHdpdGgg
YSBUeXBlLCB3ZSBjYW4gYXNrIHRoZQorICAgICAgICBOYW1lQ29udGV4dCBmb3IgdGhlIGFwcHJv
cHJpYXRlIGFycmF5LiBUaGlzIGlzIHRoZSBzYW1lIHdheSB0aGF0IGZ1bmN0aW9uIHJlc29sdXRp
b24gd29ya3MuCisKKyAgICAgICAgV2UgY2FuIHVzZSBOb2RlLnVuaWZ5KCkgdG8gZGV0ZXJtaW5l
IHdoZXRoZXIgYSBUeXBlUmVmIG1hdGNoZXMgYSBOYXRpdmVUeXBlLiBFdmVudHVhbGx5LCB0aGlz
IHdpbGwgZ28gYXdheSwgYnV0IGZvciBub3csIHRoaXMgaXMKKyAgICAgICAgYW4gb2theSBzdGFy
dC4gVGhpcyB3b3JrcyBqdXN0IGFib3V0IHRoZSBzYW1lIHdheSB0aGF0IGZ1bmN0aW9uIG92ZXJs
b2FkIHJlc29sdXRpb24gd29ya3MuIAorCisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvQWxsLmpzOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NhbGxFeHByZXNz
aW9uLmpzOgorICAgICAgICAoQ2FsbEV4cHJlc3Npb24ucHJvdG90eXBlLnJlc29sdmUpOgorICAg
ICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NoZWNrVHlwZXNXaXRoQXJndW1lbnRzLmpz
OiBDb3BpZWQgZnJvbSBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXNvbHZlVHlwZURl
ZnMuanMuIEFmdGVyIHR5cGVzCisgICAgICAgIGhhdmUgYmVlbiByZXNvbHZlZCwgdGhlcmUgc2hv
dWxkIGJlIG5vIFR5cGVSZWZzIHdpdGggbmFtZSAidmVjdG9yIiB0aGF0IGRvbid0IGhhdmUgdHlw
ZSBhcmd1bWVudHMuIFRoaXMgaXMganVzdCBhIHNhbml0eSBjaGVjay4KKyAgICAgICAgKGNoZWNr
VHlwZXNXaXRoQXJndW1lbnRzLlR5cGVXaXRoQXJndW1lbnRzQ2hlY2tlci5wcm90b3R5cGUudmlz
aXRUeXBlUmVmKToKKyAgICAgICAgKGNoZWNrVHlwZXNXaXRoQXJndW1lbnRzLlR5cGVXaXRoQXJn
dW1lbnRzQ2hlY2tlcik6CisgICAgICAgIChjaGVja1R5cGVzV2l0aEFyZ3VtZW50cyk6CisgICAg
ICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2hlY2tlci5qczoKKyAgICAgICAgKENoZWNr
ZXIucHJvdG90eXBlLnZpc2l0UHJvZ3JhbSk6IFByb2dyYW0udHlwZXMgbWlycm9ycyBOYW1lQ29u
dGV4dDogaXQncyBhIE1hcCB0aGF0IG1hcHMgc3RyaW5ncyB0byB0eXBlcy4gQmVjYXVzZSB0eXBl
cyB3aXRoCisgICAgICAgIHR5cGVBcmd1bWVudHMgc2hhcmUgbmFtZXMsIHRoaXMgaGFzIHRvIGJl
IHVwZGF0ZWQgdG8gbWFwIHN0cmluZ3MgdG8gYXJyYXlzIGZvciB0aGVzZSB0eXBlcy4KKyAgICAg
ICAgKENoZWNrZXIucHJvdG90eXBlLnZpc2l0VHlwZVJlZik6CisgICAgICAgICogV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvSW5mZXJUeXBlc0ZvckNhbGwuanM6CisgICAgICAgIChpbmZlclR5cGVz
Rm9yQ2FsbCk6IERvbid0IGtub3cgd2h5IHRoaXMgd2FzIGhlcmUuCisgICAgICAgIChpbmZlclR5
cGVzRm9yVHlwZUFyZ3VtZW50cyk6IFNhbWUgYXMgaW5mZXJUeXBlc0ZvckNhbGwsIGJ1dCB0aGlz
IG9uZSBpcyBmb3IgbWF0Y2hpbmcgdHlwZSBhcmd1bWVudHMuCisgICAgICAgICogV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvSW50cmluc2ljcy5qczogQWRkaW5nIHRoZSB0eXBlcy4gVGhpcyBwYXRj
aCBhbHNvIGFkZHMgc29tZSBzY2FsYXIgdHlwZXMgbGlrZSBoYWxmLCBjaGFyLCBldGMsIGJ1dCB0
aGV5CisgICAgICAgIGRvbid0IGhhdmUgYW55IGZ1bmN0aW9ucyB3aGljaCBhY2NlcHQgdGhlbS4g
VGhvc2Ugd2lsbCBiZSB0ZXN0ZWQgaW4gbXkgbmV4dCBwYXRjaCB3aGljaCBhZGRzIG1hdGggZnVu
Y3Rpb25zIGZvciB0aGVzZSB0eXBlcy4gVGhpcworICAgICAgICBtb3ZlcyBpbiB0aGUgZGlyZWN0
aW9uIG9mIG1hdGNoaW5nIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGluIHRoZSBzcGVjLgorICAgICAg
ICAoSW50cmluc2ljcy5jYXN0KToKKyAgICAgICAgKEludHJpbnNpY3MuYml0d2lzZUNhc3QpOgor
ICAgICAgICAoSW50cmluc2ljcy5jYXN0VG9IYWxmKToKKyAgICAgICAgKEludHJpbnNpY3MuKToK
KyAgICAgICAgKEludHJpbnNpY3MpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L05hbWVDb250ZXh0LmpzOiBBZ2dyZWdhdGUgdHlwZXMgd2l0aCB0eXBlQXJndW1lbnRzIGludG8g
YXJyYXlzLgorICAgICAgICAoTmFtZUNvbnRleHQucHJvdG90eXBlLmFkZCk6CisgICAgICAgIChO
YW1lQ29udGV4dC5wcm90b3R5cGUuZ2V0IGxldCk6CisgICAgICAgIChOYW1lQ29udGV4dC51bmRl
cmx5aW5nVGhpbmdzLnByb3RvdHlwZS5lbHNlKToKKyAgICAgICAgKE5hbWVDb250ZXh0LnByb3Rv
dHlwZS5TeW1ib2wuaXRlcmF0b3IpOgorICAgICAgICAoTmFtZUNvbnRleHQpOgorICAgICAgICAq
IFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05hbWVSZXNvbHZlci5qczoKKyAgICAgICAgKE5hbWVS
ZXNvbHZlci5wcm90b3R5cGUudmlzaXRUeXBlUmVmKTogQ2FsbCBUeXBlUmVmLnJlc29sdmUoKS4K
KyAgICAgICAgKE5hbWVSZXNvbHZlci5wcm90b3R5cGUudmlzaXRDYWxsRXhwcmVzc2lvbik6Cisg
ICAgICAgIChOYW1lUmVzb2x2ZXIpOgorICAgICAgICAoTmFtZVJlc29sdmVyLnByb3RvdHlwZS52
aXNpdFZlY3RvclR5cGUpOiBEZWxldGVkLgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL05hdGl2ZVR5cGUuanM6IE5hdGl2ZVR5cGVzIGNhbiBoYXZlIHR5cGUgYXJndW1lbnRzIG5v
dy4KKyAgICAgICAgKE5hdGl2ZVR5cGUpOgorICAgICAgICAoTmF0aXZlVHlwZS5wcm90b3R5cGUu
Z2V0IHR5cGVBcmd1bWVudHMpOgorICAgICAgICAoTmF0aXZlVHlwZS5wcm90b3R5cGUudG9TdHJp
bmcpOgorICAgICAgICAoTmF0aXZlVHlwZS5jcmVhdGUpOgorICAgICAgICAqIFdlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL1ByZXBhcmUuanM6CisgICAgICAgIChsZXQucHJlcGFyZSk6CisgICAgICAg
ICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUHJvZ3JhbS5qczogVXBkYXRlIHRvIHdvcmsgd2l0
aCB0eXBlcyBhZ2dyZWdhdGVkIGludG8gYXJyYXlzLgorICAgICAgICAoUHJvZ3JhbS5wcm90b3R5
cGUuYWRkKToKKyAgICAgICAgKFByb2dyYW0ucHJvdG90eXBlLnRvU3RyaW5nKToKKyAgICAgICAg
KFByb2dyYW0pOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1JlbW92ZVR5cGVB
cmd1bWVudHMuanM6IFJlbW92ZWQuCisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
UmVzb2x2ZU5hbWVzLmpzOiBVcGRhdGUgdG8gd29yayB3aXRoIHR5cGVzIGFnZ3JlZ2F0ZWQgaW50
byBhcnJheXMuCisgICAgICAgIChyZXNvbHZlTmFtZXNJblR5cGVzKToKKyAgICAgICAgKiBXZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXNvbHZlT3ZlcmxvYWRJbXBsLmpzOiBSZXNvbHZlIHRoZSB0
eXBlIG92ZXJsb2FkIGZvciB0eXBlcyB3aXRoIHR5cGVBcmd1bWVudHMuCisgICAgICAgICogV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvUmVzb2x2ZVR5cGVEZWZzLmpzOiBVcGRhdGUgdG8gd29yayB3
aXRoIHR5cGVzIGFnZ3JlZ2F0ZWQgaW50byBhcnJheXMuCisgICAgICAgIChyZXNvbHZlVHlwZURl
ZnNJblR5cGVzKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXdyaXRlci5q
czogVHlwZVJlZnMgYW5kIE5hdGl2ZS9WZWN0b3IgdHlwZXMgY2FuIGhhdmUgdHlwZUFyZ3VtZW50
cy4KKyAgICAgICAgKFJld3JpdGVyLnByb3RvdHlwZS52aXNpdFR5cGVSZWYpOgorICAgICAgICAo
UmV3cml0ZXIucHJvdG90eXBlLnZpc2l0VmVjdG9yVHlwZSk6CisgICAgICAgIChSZXdyaXRlcik6
CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU1BJUlYuaHRtbDoKKyAgICAgICAg
KiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TdGFuZGFyZExpYnJhcnkuanM6IE1hdGNoZXMgSW50
cmluc2ljcy4KKyAgICAgICAgKGJvb2wub3BlcmF0b3IpOgorICAgICAgICAqIFdlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL1N0YXRlbWVudENsb25lci5qczogTmF0aXZlIHR5cGVzIGNhbiBoYXZlIHR5
cGVBcmd1bWVudHMuCisgICAgICAgIChTdGF0ZW1lbnRDbG9uZXIucHJvdG90eXBlLnZpc2l0TmF0
aXZlVHlwZSk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6ZURl
ZmF1bHRDb25zdHJ1Y3Rvck9wZXJhdG9yLmpzOiBWZWN0b3IgdHlwZXMgbmVlZCBjb25zdHJ1Y3Rv
cnMgdG9vLgorICAgICAgICAoc3ludGhlc2l6ZURlZmF1bHRDb25zdHJ1Y3Rvck9wZXJhdG9yLkZp
bmRBbGxUeXBlcy5wcm90b3R5cGUudmlzaXRWZWN0b3JUeXBlKToKKyAgICAgICAgKHN5bnRoZXNp
emVEZWZhdWx0Q29uc3RydWN0b3JPcGVyYXRvci5GaW5kQWxsVHlwZXMpOgorICAgICAgICAoc3lu
dGhlc2l6ZURlZmF1bHRDb25zdHJ1Y3Rvck9wZXJhdG9yKToKKyAgICAgICAgKiBXZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9TeW50aGVzaXplU3RydWN0QWNjZXNzb3JzLmpzOiBObyByZWFzb24gdG8g
ZGlzdGluZ3Vpc2ggYmV0d2VlbiB3cmFwcGluZyBhbmQgaW5zdGFudGlhdGluZyBhIFR5cGVSZWYu
CisgICAgICAgIChzeW50aGVzaXplU3RydWN0QWNjZXNzb3JzLmNyZWF0ZVR5cGVSZWYpOgorICAg
ICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuaHRtbDoKKyAgICAgICAgKiBXZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0LmpzOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL1R5cGVPdmVybG9hZFJlc29sdXRpb25GYWlsdXJlLmpzOiBDb3BpZWQgZnJvbSBUb29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXNvbHZlVHlwZURlZnMuanMuCisgICAgICAgIChU
eXBlT3ZlcmxvYWRSZXNvbHV0aW9uRmFpbHVyZSk6CisgICAgICAgIChUeXBlT3ZlcmxvYWRSZXNv
bHV0aW9uRmFpbHVyZS5wcm90b3R5cGUuZ2V0IHR5cGUpOgorICAgICAgICAoVHlwZU92ZXJsb2Fk
UmVzb2x1dGlvbkZhaWx1cmUucHJvdG90eXBlLmdldCByZWFzb24pOgorICAgICAgICAoVHlwZU92
ZXJsb2FkUmVzb2x1dGlvbkZhaWx1cmUucHJvdG90eXBlLnRvU3RyaW5nKToKKyAgICAgICAgKiBX
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UeXBlUmVmLmpzOgorICAgICAgICAoVHlwZVJlZi53cmFw
KToKKyAgICAgICAgKFR5cGVSZWYucHJvdG90eXBlLnJlc29sdmUpOiBGaWd1cmUgb3V0IHdoaWNo
IGl0ZW0gaW4gdGhlIHBvc3NpYmxlT3ZlcmxvYWRzIGFycmF5IG1hdGNoZXMgdGhpcy4KKyAgICAg
ICAgKFR5cGVSZWYucHJvdG90eXBlLnRvU3RyaW5nKToKKyAgICAgICAgKFR5cGVSZWYpOgorICAg
ICAgICAoVHlwZVJlZi5pbnN0YW50aWF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvVW5pZmljYXRpb25Db250ZXh0LmpzOiBXZSBuZWVkIHRvIGdpdmUgbGl0
ZXJhbHMgYSBjaGFuY2UgdG8gYXNzdW1lIHRoZWlyIHByZWZlcnJlZCB0eXBlLiBUaGlzCisgICAg
ICAgIGFkZHMgdGhpcyBmYWNpbGl0eSBiYWNrIGludG8gdGhlIGNvbXBpbGVyIChpdCB3YXMgcHJl
dmlvdXNseSBkZWxldGVkKS4KKyAgICAgICAgKFVuaWZpY2F0aW9uQ29udGV4dC5wcm90b3R5cGUu
dmVyaWZ5KToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9WZWN0b3JUeXBlLmpz
OiBWZWN0b3IgdHlwZXMgaGF2ZSB0eXBlIGFyZ3VtZW50cy4KKyAgICAgICAgKFZlY3RvclR5cGUp
OgorICAgICAgICAoVmVjdG9yVHlwZS5wcm90b3R5cGUuZ2V0IGVsZW1lbnRUeXBlKToKKyAgICAg
ICAgKFZlY3RvclR5cGUucHJvdG90eXBlLmdldCBudW1FbGVtZW50cyk6CisgICAgICAgIChWZWN0
b3JUeXBlLnByb3RvdHlwZS5nZXQgbnVtRWxlbWVudHNWYWx1ZSk6CisgICAgICAgIChWZWN0b3JU
eXBlLnByb3RvdHlwZS50b1N0cmluZyk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvVmlzaXRvci5qczogSXRlcmF0ZSBvdmVyIHRoZSB0eXBlQXJndW1lbnRzLgorICAgICAgICAo
VmlzaXRvci5wcm90b3R5cGUudmlzaXRUeXBlUmVmKToKKyAgICAgICAgKFZpc2l0b3IucHJvdG90
eXBlLnZpc2l0TmF0aXZlVHlwZSk6CisgICAgICAgIChWaXNpdG9yLnByb3RvdHlwZS52aXNpdFZl
Y3RvclR5cGUpOgorICAgICAgICAoVmlzaXRvcik6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvaW5kZXguaHRtbDoKKwogMjAxOC0wOC0yMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFj
aHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJvbGwgb3V0IHIyMzUxMzkgYW5kIHIy
MzUxNDYKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0FsbC5qcyBi
L1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0FsbC5qcwppbmRleCA4MTUyNTI3M2FlNjVh
MTQ4NjU5NjRhMTNkYTQ1Y2U5NGVmMTA2ODRhLi5mOWExZDk5ZWFkYzg3YjRhNDA4Y2ZmOWU0OTkw
YTczN2VjYjhiYTFlIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9B
bGwuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQWxsLmpzCkBAIC02MCw2
ICs2MCw3IEBAIGxvYWQoIkNoZWNrTG9vcHMuanMiKTsKIGxvYWQoIkNoZWNrUmVjdXJzaW9uLmpz
Iik7CiBsb2FkKCJDaGVja1JlY3Vyc2l2ZVR5cGVzLmpzIik7CiBsb2FkKCJDaGVja1JldHVybnMu
anMiKTsKK2xvYWQoIkNoZWNrVHlwZXNXaXRoQXJndW1lbnRzLmpzIik7CiBsb2FkKCJDaGVja1Vu
cmVhY2hhYmxlQ29kZS5qcyIpOwogbG9hZCgiQ2hlY2tXcmFwcGVkLmpzIik7CiBsb2FkKCJDaGVj
a2VyLmpzIik7CkBAIC0xMzMsNyArMTM0LDYgQEAgbG9hZCgiUHRyVHlwZS5qcyIpOwogbG9hZCgi
UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5qcyIpOwogbG9hZCgiUmVjdXJzaW9uQ2hlY2tlci5q
cyIpOwogbG9hZCgiUmVjdXJzaXZlVHlwZUNoZWNrZXIuanMiKTsKLWxvYWQoIlJlbW92ZVR5cGVB
cmd1bWVudHMuanMiKTsKIGxvYWQoIlJlc29sdmVOYW1lcy5qcyIpOwogbG9hZCgiUmVzb2x2ZU92
ZXJsb2FkSW1wbC5qcyIpOwogbG9hZCgiUmVzb2x2ZVByb3BlcnRpZXMuanMiKTsKQEAgLTE1Nyw2
ICsxNTcsNyBAQCBsb2FkKCJUcmFwU3RhdGVtZW50LmpzIik7CiBsb2FkKCJUeXBlRGVmLmpzIik7
CiBsb2FkKCJUeXBlRGVmUmVzb2x2ZXIuanMiKTsKIGxvYWQoIlR5cGVSZWYuanMiKTsKK2xvYWQo
IlR5cGVPdmVybG9hZFJlc29sdXRpb25GYWlsdXJlLmpzIik7CiBsb2FkKCJUeXBlZFZhbHVlLmpz
Iik7CiBsb2FkKCJVaW50TGl0ZXJhbC5qcyIpOwogbG9hZCgiVWludExpdGVyYWxUeXBlLmpzIik7
CkBAIC0xNzAsNCArMTcxLDQgQEAgbG9hZCgiV1N5bnRheEVycm9yLmpzIik7CiBsb2FkKCJXVHJh
cEVycm9yLmpzIik7CiBsb2FkKCJXVHlwZUVycm9yLmpzIik7CiBsb2FkKCJXaGlsZUxvb3AuanMi
KTsKLWxvYWQoIldyYXBDaGVja2VyLmpzIik7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQor
bG9hZCgiV3JhcENoZWNrZXIuanMiKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL0NhbGxFeHByZXNzaW9uLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvQ2FsbEV4cHJlc3Npb24uanMKaW5kZXggYjI1Mzk4ZjBiMWI2ZWFkZTFiNzlhYzkwZTZhNzYy
NTI1ZjgxOWJkNy4uM2IxNTQ1NTk5MmU2NGUyNjc3YmEwYjAzYWI2NTY4ZWY0M2Q1ZDg2NSAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2FsbEV4cHJlc3Npb24uanMK
KysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2FsbEV4cHJlc3Npb24uanMKQEAg
LTY0LDcgKzY0LDYgQEAgY2xhc3MgQ2FsbEV4cHJlc3Npb24gZXh0ZW5kcyBFeHByZXNzaW9uIHsK
ICAgICAgICAgICAgICAgICBvdmVybG9hZC5mdW5jID0gZnVuYzsKICAgICAgICAgfQogCi0KICAg
ICAgICAgaWYgKCFvdmVybG9hZC5mdW5jKSB7CiAgICAgICAgICAgICBmYWlsdXJlcy5wdXNoKC4u
Lm92ZXJsb2FkLmZhaWx1cmVzKTsKICAgICAgICAgICAgIGxldCBtZXNzYWdlID0gIkRpZCBub3Qg
ZmluZCBmdW5jdGlvbiBuYW1lZCAiICsgdGhpcy5uYW1lICsgIiBmb3IgY2FsbCB3aXRoICI7CmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DaGVja1R5cGVzV2l0aEFy
Z3VtZW50cy5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NoZWNrVHlwZXNXaXRo
QXJndW1lbnRzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJiNmIyYmQ0OThlNzdiMTQ5ZGY0YzY4ZjRlZjNhYzFm
ZjFjZGFhYjIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9DaGVja1R5cGVzV2l0aEFyZ3VtZW50cy5qcwpAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisidXNlIHN0cmljdCI7CisKK2Z1bmN0
aW9uIGNoZWNrVHlwZXNXaXRoQXJndW1lbnRzKHByb2dyYW0pCit7CisgICAgY2xhc3MgVHlwZVdp
dGhBcmd1bWVudHNDaGVja2VyIGV4dGVuZHMgVmlzaXRvciB7CisgICAgICAgIHZpc2l0VHlwZVJl
Zihub2RlKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAobm9kZS5uYW1lID09ICJ2ZWN0b3Ii
ICYmIG5vZGUudHlwZUFyZ3VtZW50cy5sZW5ndGggPT0gMCkKKyAgICAgICAgICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoIkJ1aWx0aW4gdHlwZSAke25vZGUubmFtZX0gc2hvdWxkIGFsd2F5cyBoYXZl
IHR5cGUgYXJndW1lbnRzLiIpOworICAgICAgICB9CisgICAgfQorICAgIHByb2dyYW0udmlzaXQo
bmV3IFR5cGVXaXRoQXJndW1lbnRzQ2hlY2tlcigpKTsKK30KKwpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2hlY2tlci5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL0NoZWNrZXIuanMKaW5kZXggMWExNGM4NjZhY2VkNDExMmIxODBmNjkxNTZjMDZk
MmI2NjRkODdlMi4uNGZiN2FkZTllZDUzNTYyNjQwYzk2MmI4MWJjY2Y2MjU2NjRiMWQxYyAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2hlY2tlci5qcworKysgYi9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DaGVja2VyLmpzCkBAIC00MSw4ICs0MSwxMyBA
QCBjbGFzcyBDaGVja2VyIGV4dGVuZHMgVmlzaXRvciB7CiAgICAgICAgICAgICBzdGF0ZW1lbnQu
dmlzaXQodGhpcyk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGZvciAobGV0IHR5cGUg
b2Ygbm9kZS50eXBlcy52YWx1ZXMoKSkKLSAgICAgICAgICAgIGRvU3RhdGVtZW50KHR5cGUpOwor
ICAgICAgICBmb3IgKGxldCB0eXBlIG9mIG5vZGUudHlwZXMudmFsdWVzKCkpIHsKKyAgICAgICAg
ICAgIGlmICh0eXBlIGluc3RhbmNlb2YgQXJyYXkpIHsKKyAgICAgICAgICAgICAgICBmb3IgKGxl
dCBjb25zdGl0dWVudFR5cGUgb2YgdHlwZSkKKyAgICAgICAgICAgICAgICAgICAgZG9TdGF0ZW1l
bnQoY29uc3RpdHVlbnRUeXBlKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAg
IGRvU3RhdGVtZW50KHR5cGUpOworICAgICAgICB9CiAgICAgICAgIGZvciAobGV0IGZ1bmNzIG9m
IG5vZGUuZnVuY3Rpb25zLnZhbHVlcygpKSB7CiAgICAgICAgICAgICBmb3IgKGxldCBmdW5jIG9m
IGZ1bmNzKSB7CiAgICAgICAgICAgICAgICAgdGhpcy52aXNpdEZ1bmMoZnVuYyk7CkBAIC0yNDcs
NiArMjUyLDEwIEBAIGNsYXNzIENoZWNrZXIgZXh0ZW5kcyBWaXNpdG9yIHsKICAgICB7CiAgICAg
ICAgIGlmICghbm9kZS50eXBlKQogICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJUeXBlIHJl
ZmVyZW5jZSB3aXRob3V0IGEgdHlwZSBpbiBjaGVja2VyOiAiICsgbm9kZSArICIgYXQgIiArIG5v
ZGUub3JpZ2luKTsKKyAgICAgICAgLy8gQWxsIHRoZSBzdHJ1Y3RzIHdpbGwgYmUgdmlzaXRlZCBi
eSB2aXNpdFByb2dyYW0oKSBpdGVyYXRpbmcgdGhyb3VnaCBlYWNoIHRvcC1sZXZlbCB0eXBlLgor
ICAgICAgICAvLyBXZSBkb24ndCB3YW50IHRvIHJlY3Vyc2UgaGVyZSBiZWNhdXNlIHRoZSBjb250
ZW50cyBvZiBzdHJ1Y3RzIGNhbiByZWZlciB0byB0aGVtc2VsdmVzIChlLmcuIGEgbGlua2VkIGxp
c3QpLAorICAgICAgICAvLyBhbmQgdGhpcyB3b3VsZCBjYW4gYW4gaW5maW5pdGUgbG9vcC4KKyAg
ICAgICAgLy8gVHlwZWRlZnMgY2FuJ3QgcmVmZXIgdG8gdGhlbXNlbHZlcyBiZWNhdXNlIHdlIGNo
ZWNrIHRoYXQgaW4gVHlwZURlZlJlc29sdmVyLgogICAgICAgICBpZiAoIShub2RlLnR5cGUgaW5z
dGFuY2VvZiBTdHJ1Y3RUeXBlKSkKICAgICAgICAgICAgIG5vZGUudHlwZS52aXNpdCh0aGlzKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9JbmZlclR5
cGVzRm9yQ2FsbC5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0luZmVyVHlwZXNG
b3JDYWxsLmpzCmluZGV4IDVmMzJlZDFjNDkwYTdkZjg5NDFlOTE5YzEzMGNmNjVlYWE4YjZhNGQu
LmJjZmViOTg2Y2FmZjQ5ZjAyODdhODM2NzhiZjExNTYyODQ3ZjAzODkgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0luZmVyVHlwZXNGb3JDYWxsLmpzCisrKyBiL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0luZmVyVHlwZXNGb3JDYWxsLmpzCkBAIC0zNiwx
MiArMzYsOCBAQCBmdW5jdGlvbiBpbmZlclR5cGVzRm9yQ2FsbChmdW5jLCBhcmd1bWVudFR5cGVz
LCByZXR1cm5UeXBlKQogICAgICAgICBpZiAoIWFyZ3VtZW50VHlwZXNbaV0udW5pZnkodW5pZmlj
YXRpb25Db250ZXh0LCBmdW5jLnBhcmFtZXRlcnNbaV0udHlwZSkpCiAgICAgICAgICAgICByZXR1
cm4ge2ZhaWx1cmU6IG5ldyBPdmVybG9hZFJlc29sdXRpb25GYWlsdXJlKGZ1bmMsICJBcmd1bWVu
dCAjIiArIChpICsgMSkgKyAiICIgKyAoZnVuYy5wYXJhbWV0ZXJzW2ldLm5hbWUgPyAiZm9yIHBh
cmFtZXRlciAiICsgZnVuYy5wYXJhbWV0ZXJzW2ldLm5hbWUgKyAiICIgOiAiIikgKyAiZG9lcyBu
b3QgbWF0Y2ggKHBhc3NlZCAiICsgYXJndW1lbnRUeXBlc1tpXSArICIsIHJlcXVpcmUgIiArIGZ1
bmMucGFyYW1ldGVyc1tpXS50eXBlICsgIikiKX07CiAgICAgfQotICAgIGlmIChyZXR1cm5UeXBl
ICYmICFyZXR1cm5UeXBlLnVuaWZ5KHVuaWZpY2F0aW9uQ29udGV4dCwgZnVuYy5yZXR1cm5UeXBl
KSkgewotICAgICAgICBpZiAoZnVuYy5yZXR1cm5UeXBlLnRvU3RyaW5nKCkgPT0gInZlY3RvciIp
IHsKLSAgICAgICAgICAgIHJldHVyblR5cGUudW5pZnkodW5pZmljYXRpb25Db250ZXh0LCBmdW5j
LnJldHVyblR5cGUpCi0gICAgICAgIH0KKyAgICBpZiAocmV0dXJuVHlwZSAmJiAhcmV0dXJuVHlw
ZS51bmlmeSh1bmlmaWNhdGlvbkNvbnRleHQsIGZ1bmMucmV0dXJuVHlwZSkpCiAgICAgICAgIHJl
dHVybiB7ZmFpbHVyZTogbmV3IE92ZXJsb2FkUmVzb2x1dGlvbkZhaWx1cmUoZnVuYywgIlJldHVy
biB0eXBlICIgKyBmdW5jLnJldHVyblR5cGUgKyAiIGRvZXMgbm90IG1hdGNoICIgKyByZXR1cm5U
eXBlKX07Ci0gICAgfQogICAgIGxldCB2ZXJpZmljYXRpb25SZXN1bHQgPSB1bmlmaWNhdGlvbkNv
bnRleHQudmVyaWZ5KCk7CiAgICAgaWYgKCF2ZXJpZmljYXRpb25SZXN1bHQucmVzdWx0KQogICAg
ICAgICByZXR1cm4ge2ZhaWx1cmU6IG5ldyBPdmVybG9hZFJlc29sdXRpb25GYWlsdXJlKGZ1bmMs
IHZlcmlmaWNhdGlvblJlc3VsdC5yZWFzb24pfTsKQEAgLTQ5LDMgKzQ1LDIxIEBAIGZ1bmN0aW9u
IGluZmVyVHlwZXNGb3JDYWxsKGZ1bmMsIGFyZ3VtZW50VHlwZXMsIHJldHVyblR5cGUpCiAgICAg
cmV0dXJuIHtmdW5jLCB1bmlmaWNhdGlvbkNvbnRleHR9OwogfQogCitmdW5jdGlvbiBpbmZlclR5
cGVzRm9yVHlwZUFyZ3VtZW50cyh0eXBlLCB0eXBlQXJndW1lbnRzKQoreworICAgIGlmICh0eXBl
QXJndW1lbnRzLmxlbmd0aCAhPSB0eXBlLnR5cGVBcmd1bWVudHMubGVuZ3RoKQorICAgICAgICBy
ZXR1cm4ge2ZhaWx1cmU6IG5ldyBUeXBlT3ZlcmxvYWRSZXNvbHV0aW9uRmFpbHVyZSh0eXBlLCAi
V3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cyAocGFzc2VkICIgKyB0eXBlQXJndW1lbnRzLmxlbmd0
aCArICIsIHJlcXVpcmUgIiArIHR5cGUudHlwZUFyZ3VtZW50cy5sZW5ndGggKyAiKSIpfTsKKyAg
ICBsZXQgdW5pZmljYXRpb25Db250ZXh0ID0gbmV3IFVuaWZpY2F0aW9uQ29udGV4dCgpOworCisg
ICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0eXBlQXJndW1lbnRzLmxlbmd0aDsgKytpKSB7CisgICAg
ICAgIGlmICghdHlwZUFyZ3VtZW50c1tpXSkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigi
TnVsbCB0eXBlIGFyZ3VtZW50IGF0IGkgPSAiICsgaSk7CisgICAgICAgIGlmICghdHlwZUFyZ3Vt
ZW50c1tpXS51bmlmeSh1bmlmaWNhdGlvbkNvbnRleHQsIHR5cGUudHlwZUFyZ3VtZW50c1tpXSkp
CisgICAgICAgICAgICByZXR1cm4ge2ZhaWx1cmU6IG5ldyBUeXBlT3ZlcmxvYWRSZXNvbHV0aW9u
RmFpbHVyZSh0eXBlLCAiQXJndW1lbnQgIyIgKyAoaSArIDEpICsgIiAiICsgKHR5cGUudHlwZUFy
Z3VtZW50c1tpXS5uYW1lID8gImZvciBwYXJhbWV0ZXIgIiArIHR5cGUudHlwZUFyZ3VtZW50c1tp
XS5uYW1lICsgIiAiIDogIiIpICsgImRvZXMgbm90IG1hdGNoIChwYXNzZWQgIiArIHR5cGVBcmd1
bWVudHNbaV0gKyAiLCByZXF1aXJlICIgKyB0eXBlLnR5cGVBcmd1bWVudHNbaV0udHlwZSArICIp
Iil9OworICAgIH0KKyAgICBsZXQgdmVyaWZpY2F0aW9uUmVzdWx0ID0gdW5pZmljYXRpb25Db250
ZXh0LnZlcmlmeSgpOworICAgIGlmICghdmVyaWZpY2F0aW9uUmVzdWx0LnJlc3VsdCkKKyAgICAg
ICAgcmV0dXJuIHtmYWlsdXJlOiBuZXcgVHlwZU92ZXJsb2FkUmVzb2x1dGlvbkZhaWx1cmUodHlw
ZSwgdmVyaWZpY2F0aW9uUmVzdWx0LnJlYXNvbil9OworCisgICAgcmV0dXJuIHt0eXBlLCB1bmlm
aWNhdGlvbkNvbnRleHR9OworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvSW50cmluc2ljcy5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0ludHJp
bnNpY3MuanMKaW5kZXggNTBkNDBjMGMwZTQ3ZTExMmJjNzRjY2ZjY2I3MDQ5NDI3MTE2YjBmYi4u
ZTljM2QxYjM0MTc2YTRiZmQ3OWI0ZjQ0OTRiMzdiZTBlNWU5YjM4MCAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvSW50cmluc2ljcy5qcworKysgYi9Ub29scy9XZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9JbnRyaW5zaWNzLmpzCkBAIC0zMywxNSArMzMsNyBAQCBjbGFz
cyBJbnRyaW5zaWNzIHsKICAgICAgICAgLy8gdG8gY2F0Y2ggdGhlIGludHJpbnNpY3MgbXVzdCBi
ZSBiYXNlZCBvbiB0aGUgdHlwZSBuYW1lcyB0aGF0IFN0YW5kYXJkTGlicmFyeS5qcyB1c2VzLgog
ICAgICAgICAvLyBGb3IgZXhhbXBsZSwgaWYgYSBuYXRpdmUgZnVuY3Rpb24gaXMgZGVjbGFyZWQg
dXNpbmcgImludCIgcmF0aGVyIHRoYW4gImludCIsIHRoZW4gd2UgbXVzdAogICAgICAgICAvLyB1
c2UgImludCIgaGVyZSwgc2luY2Ugd2UgZG9uJ3QgeWV0IGtub3cgdGhhdCB0aGV5IGFyZSB0aGUg
c2FtZSB0eXBlLgotICAgICAgICAKLSAgICAgICAgdGhpcy5fbWFwLnNldCgKLSAgICAgICAgICAg
ICJuYXRpdmUgdHlwZWRlZiB2b2lkIiwKLSAgICAgICAgICAgIHR5cGUgPT4gewotICAgICAgICAg
ICAgICAgIHRoaXMudm9pZCA9IHR5cGU7Ci0gICAgICAgICAgICAgICAgdHlwZS5zaXplID0gMDsK
LSAgICAgICAgICAgICAgICB0eXBlLnBvcHVsYXRlRGVmYXVsdFZhbHVlID0gKCkgPT4geyB9Owot
ICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIGZ1bmN0aW9uIGlzQml0d2lzZUVx
dWl2YWxlbnQobGVmdCwgcmlnaHQpCiAgICAgICAgIHsKICAgICAgICAgICAgIGxldCBkb3VibGVB
cnJheSA9IG5ldyBGbG9hdDY0QXJyYXkoMSk7CkBAIC01Niw1OCArNDgsODMgQEAgY2xhc3MgSW50
cmluc2ljcyB7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCisgICAgICAg
IGZ1bmN0aW9uIGNhc3QodHlwZWRBcnJheUNvbnN0cnVjdG9yLCBudW1iZXIpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBhcnJheSA9IG5ldyB0eXBlZEFycmF5Q29uc3RydWN0b3IoMSk7Cisg
ICAgICAgICAgICBhcnJheVswXSA9IG51bWJlcjsKKyAgICAgICAgICAgIHJldHVybiBhcnJheVsw
XTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGJpdHdpc2VDYXN0KHR5cGVkQXJyYXlD
b25zdHJ1Y3RvcjEsIHR5cGVkQXJyYXlDb25zdHJ1Y3RvcjIsIHZhbHVlKQorICAgICAgICB7Cisg
ICAgICAgICAgICBsZXQgdHlwZWRBcnJheTEgPSBuZXcgdHlwZWRBcnJheUNvbnN0cnVjdG9yMSgx
KTsKKyAgICAgICAgICAgIGxldCB0eXBlZEFycmF5MiA9IG5ldyB0eXBlZEFycmF5Q29uc3RydWN0
b3IyKHR5cGVkQXJyYXkxLmJ1ZmZlcik7CisgICAgICAgICAgICB0eXBlZEFycmF5MVswXSA9IHZh
bHVlOworICAgICAgICAgICAgcmV0dXJuIHR5cGVkQXJyYXkyWzBdOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gY2FzdFRvSGFsZihudW1iZXIpCisgICAgICAgIHsKKyAgICAgICAgICAg
IC8vIEZJWE1FOiBNYWtlIHRoaXMgbWF0aCBvYmV5IElFRUUgNzU0LgorICAgICAgICAgICAgaWYg
KE51bWJlci5pc05hTihudW1iZXIpKQorICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlcgorICAg
ICAgICAgICAgaWYgKG51bWJlciA+IDY1NTA0KQorICAgICAgICAgICAgICAgIHJldHVybiBOdW1i
ZXIuUE9TSVRJVkVfSU5GSU5JVFk7CisgICAgICAgICAgICBpZiAobnVtYmVyIDwgLTY1NTA0KQor
ICAgICAgICAgICAgICAgIHJldHVybiBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFk7CisgICAgICAg
ICAgICBpZiAobnVtYmVyID4gMCAmJiBudW1iZXIgPCBNYXRoLnBvdygyLCAtMjQpKQorICAgICAg
ICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgaWYgKG51bWJlciA8IDAgJiYgbnVtYmVy
ID4gLU1hdGgucG93KDIsIC0yNCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0wOworICAgICAg
ICAgICAgbGV0IGRvdWJsZUFycmF5ID0gbmV3IEZsb2F0NjRBcnJheSgxKTsKKyAgICAgICAgICAg
IGxldCB1aW50QXJyYXkgPSBuZXcgVWludDhBcnJheShkb3VibGVBcnJheS5idWZmZXIpOworICAg
ICAgICAgICAgZG91YmxlQXJyYXlbMF0gPSBudW1iZXI7CisgICAgICAgICAgICBsZXQgc2lnbiA9
IHVpbnRBcnJheVs3XSAmIDB4ODA7CisgICAgICAgICAgICBsZXQgZXhwb25lbnQgPSAoKHVpbnRB
cnJheVs3XSAmIDB4N2YpIDw8IDQpIHwgKCh1aW50QXJyYXlbNl0gJiAweGYwKSA+Pj4gNCk7Cisg
ICAgICAgICAgICBsZXQgc2lnbmlmaWNhbmQgPSAoKHVpbnRBcnJheVs2XSAmIDB4MGYpIDw8IDYp
IHwgKCh1aW50QXJyYXlbNV0gJiAweGZjKSA+Pj4gMik7CisKKyAgICAgICAgICAgIGlmICgoZXhw
b25lbnQgLSAxMDIzKSA8IC0xNCkgeworICAgICAgICAgICAgICAgIGV4cG9uZW50ID0gMDsKKyAg
ICAgICAgICAgICAgICBzaWduaWZpY2FuZCA9IChNYXRoLmFicyhudW1iZXIpICogTWF0aC5wb3co
MiwgMjQpKSA+Pj4gMDsKKyAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBNYXRoLnBvdygyLCAt
MTQpICogc2lnbmlmaWNhbmQgLyAxMDI0OworICAgICAgICAgICAgICAgIGlmIChzaWduICE9IDAp
CisgICAgICAgICAgICAgICAgICAgIHZhbHVlICo9IC0xOworICAgICAgICAgICAgICAgIHJldHVy
biB2YWx1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZG91YmxlQXJyYXlbMF0gPSAw
OworCisgICAgICAgICAgICB1aW50QXJyYXlbN10gfD0gc2lnbjsKKyAgICAgICAgICAgIHVpbnRB
cnJheVs3XSB8PSAoZXhwb25lbnQgPj4+IDQpOworICAgICAgICAgICAgdWludEFycmF5WzZdIHw9
ICgoZXhwb25lbnQgPDwgNCkgJiAweGYwKTsKKyAgICAgICAgICAgIHVpbnRBcnJheVs2XSB8PSAo
c2lnbmlmaWNhbmQgPj4+IDYpOworICAgICAgICAgICAgdWludEFycmF5WzVdIHw9ICgoc2lnbmlm
aWNhbmQgPDwgMikgJiAweGZjKTsKKworICAgICAgICAgICAgcmV0dXJuIGRvdWJsZUFycmF5WzBd
OworICAgICAgICB9CisKICAgICAgICAgdGhpcy5fbWFwLnNldCgKLSAgICAgICAgICAgICJuYXRp
dmUgdHlwZWRlZiBpbnQiLAorICAgICAgICAgICAgIm5hdGl2ZSB0eXBlZGVmIHZvaWQiLAogICAg
ICAgICAgICAgdHlwZSA9PiB7Ci0gICAgICAgICAgICAgICAgdGhpcy5pbnQgPSB0eXBlOwotICAg
ICAgICAgICAgICAgIHR5cGUuaXNQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICAgICAgICAgIHR5
cGUuaXNJbnQgPSB0cnVlOwotICAgICAgICAgICAgICAgIHR5cGUuaXNOdW1iZXIgPSB0cnVlOwot
ICAgICAgICAgICAgICAgIHR5cGUuaXNTaWduZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgIHR5
cGUuY2FuUmVwcmVzZW50ID0gdmFsdWUgPT4gaXNCaXR3aXNlRXF1aXZhbGVudCh2YWx1ZSB8IDAs
IHZhbHVlKTsKLSAgICAgICAgICAgICAgICB0eXBlLnNpemUgPSAxOwotICAgICAgICAgICAgICAg
IHR5cGUuZGVmYXVsdFZhbHVlID0gMDsKLSAgICAgICAgICAgICAgICB0eXBlLmNyZWF0ZUxpdGVy
YWwgPSAob3JpZ2luLCB2YWx1ZSkgPT4gSW50TGl0ZXJhbC53aXRoVHlwZShvcmlnaW4sIHZhbHVl
IHwgMCwgdHlwZSk7Ci0gICAgICAgICAgICAgICAgdHlwZS5zdWNjZXNzb3JWYWx1ZSA9IHZhbHVl
ID0+ICh2YWx1ZSArIDEpIHwgMDsKLSAgICAgICAgICAgICAgICB0eXBlLnZhbHVlc0VxdWFsID0g
KGEsIGIpID0+IGEgPT09IGI7Ci0gICAgICAgICAgICAgICAgdHlwZS5wb3B1bGF0ZURlZmF1bHRW
YWx1ZSA9IChidWZmZXIsIG9mZnNldCkgPT4gYnVmZmVyLnNldChvZmZzZXQsIDApOwotICAgICAg
ICAgICAgICAgIHR5cGUuZm9ybWF0VmFsdWVGcm9tSW50TGl0ZXJhbCA9IHZhbHVlID0+IHZhbHVl
IHwgMDsKLSAgICAgICAgICAgICAgICB0eXBlLmZvcm1hdFZhbHVlRnJvbVVpbnRMaXRlcmFsID0g
dmFsdWUgPT4gdmFsdWUgfCAwOwotICAgICAgICAgICAgICAgIHR5cGUuYWxsVmFsdWVzID0gZnVu
Y3Rpb24qKCkgeyAKLSAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gMHhm
ZmZmZmZmZjsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBpIHwg
MDsKLSAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHt2YWx1ZTogdmFsdWUsIG5hbWU6IHZh
bHVlfTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH07CisgICAgICAg
ICAgICAgICAgdGhpcy52b2lkID0gdHlwZTsKKyAgICAgICAgICAgICAgICB0eXBlLnNpemUgPSAw
OworICAgICAgICAgICAgICAgIHR5cGUucG9wdWxhdGVEZWZhdWx0VmFsdWUgPSAoKSA9PiB7IH07
CiAgICAgICAgICAgICB9KTsKIAogICAgICAgICB0aGlzLl9tYXAuc2V0KAotICAgICAgICAgICAg
Im5hdGl2ZSB0eXBlZGVmIHVpbnQiLAorICAgICAgICAgICAgIm5hdGl2ZSB0eXBlZGVmIGJvb2wi
LAogICAgICAgICAgICAgdHlwZSA9PiB7Ci0gICAgICAgICAgICAgICAgdGhpcy51aW50ID0gdHlw
ZTsKKyAgICAgICAgICAgICAgICB0aGlzLmJvb2wgPSB0eXBlOwogICAgICAgICAgICAgICAgIHR5
cGUuaXNQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICAgICAgICAgIHR5cGUuaXNJbnQgPSB0cnVl
OwotICAgICAgICAgICAgICAgIHR5cGUuaXNOdW1iZXIgPSB0cnVlOwotICAgICAgICAgICAgICAg
IHR5cGUuaXNTaWduZWQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICB0eXBlLmNhblJlcHJlc2Vu
dCA9IHZhbHVlID0+IGlzQml0d2lzZUVxdWl2YWxlbnQodmFsdWUgPj4+IDAsIHZhbHVlKTsKICAg
ICAgICAgICAgICAgICB0eXBlLnNpemUgPSAxOwotICAgICAgICAgICAgICAgIHR5cGUuZGVmYXVs
dFZhbHVlID0gMDsKLSAgICAgICAgICAgICAgICB0eXBlLmNyZWF0ZUxpdGVyYWwgPSAob3JpZ2lu
LCB2YWx1ZSkgPT4gSW50TGl0ZXJhbC53aXRoVHlwZShvcmlnaW4sIHZhbHVlID4+PiAwLCB0eXBl
KTsKLSAgICAgICAgICAgICAgICB0eXBlLnN1Y2Nlc3NvclZhbHVlID0gdmFsdWUgPT4gKHZhbHVl
ICsgMSkgPj4+IDA7Ci0gICAgICAgICAgICAgICAgdHlwZS52YWx1ZXNFcXVhbCA9IChhLCBiKSA9
PiBhID09PSBiOwotICAgICAgICAgICAgICAgIHR5cGUucG9wdWxhdGVEZWZhdWx0VmFsdWUgPSAo
YnVmZmVyLCBvZmZzZXQpID0+IGJ1ZmZlci5zZXQob2Zmc2V0LCAwKTsKLSAgICAgICAgICAgICAg
ICB0eXBlLmZvcm1hdFZhbHVlRnJvbUludExpdGVyYWwgPSB2YWx1ZSA9PiB2YWx1ZSA+Pj4gMDsK
LSAgICAgICAgICAgICAgICB0eXBlLmZvcm1hdFZhbHVlRnJvbVVpbnRMaXRlcmFsID0gdmFsdWUg
PT4gdmFsdWUgPj4+IDA7Ci0gICAgICAgICAgICAgICAgdHlwZS5hbGxWYWx1ZXMgPSBmdW5jdGlv
biooKSB7IAotICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSAweGZmZmZm
ZmZmOyArK2kpCi0gICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCB7dmFsdWU6IGksIG5hbWU6
IGl9OwotICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgdHlwZS5wb3B1bGF0ZURl
ZmF1bHRWYWx1ZSA9IChidWZmZXIsIG9mZnNldCkgPT4gYnVmZmVyLnNldChvZmZzZXQsIGZhbHNl
KTsKICAgICAgICAgICAgIH0pOwogCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAg
ICAibmF0aXZlIHR5cGVkZWYgdWNoYXIiLAogICAgICAgICAgICAgdHlwZSA9PiB7CiAgICAgICAg
ICAgICAgICAgdGhpcy51Y2hhciA9IHR5cGU7CisgICAgICAgICAgICAgICAgdHlwZS5pc1ByaW1p
dGl2ZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgdHlwZS5pc0ludCA9IHRydWU7CiAgICAgICAg
ICAgICAgICAgdHlwZS5pc051bWJlciA9IHRydWU7CiAgICAgICAgICAgICAgICAgdHlwZS5pc1Np
Z25lZCA9IGZhbHNlOwpAQCAtMTI2LDE0OSArMTQzLDI5MiBAQCBjbGFzcyBJbnRyaW5zaWNzIHsK
ICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgfSk7CiAKKworICAgICAgICAgICAgdGhp
cy5fbWFwLnNldCgKKyAgICAgICAgICAgICAibmF0aXZlIHR5cGVkZWYgdXNob3J0IiwKKyAgICAg
ICAgICAgICB0eXBlID0+IHsKKyAgICAgICAgICAgICAgICAgdGhpcy51c2hvcnQgPSB0eXBlOwor
ICAgICAgICAgICAgICAgICB0eXBlLmlzUHJpbWl0aXZlID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICAgdHlwZS5pc0ludCA9IHRydWU7CisgICAgICAgICAgICAgICAgIHR5cGUuaXNOdW1iZXIgPSB0
cnVlOworICAgICAgICAgICAgICAgICB0eXBlLmlzU2lnbmVkID0gZmFsc2U7CisgICAgICAgICAg
ICAgICAgIHR5cGUuY2FuUmVwcmVzZW50ID0gdmFsdWUgPT4gaXNCaXR3aXNlRXF1aXZhbGVudCh2
YWx1ZSAmIDB4ZmZmZiwgdmFsdWUpOworICAgICAgICAgICAgICAgICB0eXBlLnNpemUgPSAxOwor
ICAgICAgICAgICAgICAgICB0eXBlLmRlZmF1bHRWYWx1ZSA9IDA7CisgICAgICAgICAgICAgICAg
IHR5cGUuY3JlYXRlTGl0ZXJhbCA9IChvcmlnaW4sIHZhbHVlKSA9PiBJbnRMaXRlcmFsLndpdGhU
eXBlKG9yaWdpbiwgdmFsdWUgJiAweGZmZmYsIHR5cGUpOworICAgICAgICAgICAgICAgICB0eXBl
LnN1Y2Nlc3NvclZhbHVlID0gdmFsdWUgPT4gKHZhbHVlICsgMSkgJiAweGZmZmY7CisgICAgICAg
ICAgICAgICAgIHR5cGUudmFsdWVzRXF1YWwgPSAoYSwgYikgPT4gYSA9PT0gYjsKKyAgICAgICAg
ICAgICAgICAgdHlwZS5wb3B1bGF0ZURlZmF1bHRWYWx1ZSA9IChidWZmZXIsIG9mZnNldCkgPT4g
YnVmZmVyLnNldChvZmZzZXQsIDApOworICAgICAgICAgICAgICAgICB0eXBlLmZvcm1hdFZhbHVl
RnJvbUludExpdGVyYWwgPSB2YWx1ZSA9PiB2YWx1ZSAmIDB4ZmZmZjsKKyAgICAgICAgICAgICAg
ICAgdHlwZS5mb3JtYXRWYWx1ZUZyb21VaW50TGl0ZXJhbCA9IHZhbHVlID0+IHZhbHVlICYgMHhm
ZmZmOworICAgICAgICAgICAgICAgICB0eXBlLmFsbFZhbHVlcyA9IGZ1bmN0aW9uKigpIHsKKyAg
ICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IDB4ZmZmZjsgKytpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHt2YWx1ZTogaSwgbmFtZTogaX07CisgICAgICAg
ICAgICAgICAgIH07CisgICAgICAgICAgICAgfSk7CisKICAgICAgICAgdGhpcy5fbWFwLnNldCgK
LSAgICAgICAgICAgICJuYXRpdmUgdHlwZWRlZiBmbG9hdCIsCi0gICAgICAgICAgICB0eXBlID0+
IHsKLSAgICAgICAgICAgICAgICB0aGlzLmZsb2F0ID0gdHlwZTsKLSAgICAgICAgICAgICAgICB0
eXBlLmlzUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB0eXBlLnNpemUgPSAxOwot
ICAgICAgICAgICAgICAgIHR5cGUuaXNGbG9hdGluZyA9IHRydWU7Ci0gICAgICAgICAgICAgICAg
dHlwZS5pc051bWJlciA9IHRydWU7Ci0gICAgICAgICAgICAgICAgdHlwZS5jYW5SZXByZXNlbnQg
PSB2YWx1ZSA9PiBpc0JpdHdpc2VFcXVpdmFsZW50KE1hdGguZnJvdW5kKHZhbHVlKSwgdmFsdWUp
OwotICAgICAgICAgICAgICAgIHR5cGUucG9wdWxhdGVEZWZhdWx0VmFsdWUgPSAoYnVmZmVyLCBv
ZmZzZXQpID0+IGJ1ZmZlci5zZXQob2Zmc2V0LCAwKTsKLSAgICAgICAgICAgICAgICB0eXBlLmZv
cm1hdFZhbHVlRnJvbUludExpdGVyYWwgPSB2YWx1ZSA9PiB2YWx1ZTsKLSAgICAgICAgICAgICAg
ICB0eXBlLmZvcm1hdFZhbHVlRnJvbVVpbnRMaXRlcmFsID0gdmFsdWUgPT4gdmFsdWU7Ci0gICAg
ICAgICAgICAgICAgdHlwZS5mb3JtYXRWYWx1ZUZyb21GbG9hdExpdGVyYWwgPSB2YWx1ZSA9PiBN
YXRoLmZyb3VuZCh2YWx1ZSk7Ci0gICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAibmF0aXZl
IHR5cGVkZWYgdWludCIsCisgICAgICAgICAgICAgdHlwZSA9PiB7CisgICAgICAgICAgICAgICAg
IHRoaXMudWludCA9IHR5cGU7CisgICAgICAgICAgICAgICAgIHR5cGUuaXNQcmltaXRpdmUgPSB0
cnVlOworICAgICAgICAgICAgICAgICB0eXBlLmlzSW50ID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICAgdHlwZS5pc051bWJlciA9IHRydWU7CisgICAgICAgICAgICAgICAgIHR5cGUuaXNTaWduZWQg
PSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5jYW5SZXByZXNlbnQgPSB2YWx1ZSA9PiBp
c0JpdHdpc2VFcXVpdmFsZW50KHZhbHVlID4+PiAwLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAg
IHR5cGUuc2l6ZSA9IDE7CisgICAgICAgICAgICAgICAgIHR5cGUuZGVmYXVsdFZhbHVlID0gMDsK
KyAgICAgICAgICAgICAgICAgdHlwZS5jcmVhdGVMaXRlcmFsID0gKG9yaWdpbiwgdmFsdWUpID0+
IEludExpdGVyYWwud2l0aFR5cGUob3JpZ2luLCB2YWx1ZSA+Pj4gMCwgdHlwZSk7CisgICAgICAg
ICAgICAgICAgIHR5cGUuc3VjY2Vzc29yVmFsdWUgPSB2YWx1ZSA9PiAodmFsdWUgKyAxKSA+Pj4g
MDsKKyAgICAgICAgICAgICAgICAgdHlwZS52YWx1ZXNFcXVhbCA9IChhLCBiKSA9PiBhID09PSBi
OworICAgICAgICAgICAgICAgICB0eXBlLnBvcHVsYXRlRGVmYXVsdFZhbHVlID0gKGJ1ZmZlciwg
b2Zmc2V0KSA9PiBidWZmZXIuc2V0KG9mZnNldCwgMCk7CisgICAgICAgICAgICAgICAgIHR5cGUu
Zm9ybWF0VmFsdWVGcm9tSW50TGl0ZXJhbCA9IHZhbHVlID0+IHZhbHVlID4+PiAwOworICAgICAg
ICAgICAgICAgICB0eXBlLmZvcm1hdFZhbHVlRnJvbVVpbnRMaXRlcmFsID0gdmFsdWUgPT4gdmFs
dWUgPj4+IDA7CisgICAgICAgICAgICAgICAgIHR5cGUuYWxsVmFsdWVzID0gZnVuY3Rpb24qKCkg
eworICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gMHhmZmZmZmZmZjsg
KytpKQorICAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHt2YWx1ZTogaSwgbmFtZTogaX07
CisgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgfSk7CiAKICAgICAgICAgdGhpcy5f
bWFwLnNldCgKLSAgICAgICAgICAgICJuYXRpdmUgdHlwZWRlZiBib29sIiwKLSAgICAgICAgICAg
IHR5cGUgPT4gewotICAgICAgICAgICAgICAgIHRoaXMuYm9vbCA9IHR5cGU7Ci0gICAgICAgICAg
ICAgICAgdHlwZS5pc1ByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgdHlwZS5zaXpl
ID0gMTsKLSAgICAgICAgICAgICAgICB0eXBlLnBvcHVsYXRlRGVmYXVsdFZhbHVlID0gKGJ1ZmZl
ciwgb2Zmc2V0KSA9PiBidWZmZXIuc2V0KG9mZnNldCwgZmFsc2UpOwotICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICAgIm5hdGl2ZSB0eXBlZGVmIGNoYXIiLAorICAgICAgICAgICAgIHR5cGUg
PT4geworICAgICAgICAgICAgICAgICB0aGlzLmNoYXIgPSB0eXBlOworICAgICAgICAgICAgICAg
ICB0eXBlLmlzUHJpbWl0aXZlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5pc0ludCA9
IHRydWU7CisgICAgICAgICAgICAgICAgIHR5cGUuaXNOdW1iZXIgPSB0cnVlOworICAgICAgICAg
ICAgICAgICB0eXBlLmlzU2lnbmVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5jYW5S
ZXByZXNlbnQgPSB2YWx1ZSA9PiBpc0JpdHdpc2VFcXVpdmFsZW50KGNhc3QoSW50OEFycmF5LCB2
YWx1ZSksIHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgdHlwZS5zaXplID0gMTsKKyAgICAgICAg
ICAgICAgICAgdHlwZS5kZWZhdWx0VmFsdWUgPSAwOworICAgICAgICAgICAgICAgICB0eXBlLmNy
ZWF0ZUxpdGVyYWwgPSAob3JpZ2luLCB2YWx1ZSkgPT4gSW50TGl0ZXJhbC53aXRoVHlwZShvcmln
aW4sIGNhc3QoSW50OEFycmF5LCB2YWx1ZSksIHR5cGUpOworICAgICAgICAgICAgICAgICB0eXBl
LnN1Y2Nlc3NvclZhbHVlID0gdmFsdWUgPT4gY2FzdChJbnQ4QXJyYXksIHZhbHVlICsgMSk7Cisg
ICAgICAgICAgICAgICAgIHR5cGUudmFsdWVzRXF1YWwgPSAoYSwgYikgPT4gYSA9PT0gYjsKKyAg
ICAgICAgICAgICAgICAgdHlwZS5wb3B1bGF0ZURlZmF1bHRWYWx1ZSA9IChidWZmZXIsIG9mZnNl
dCkgPT4gYnVmZmVyLnNldChvZmZzZXQsIDApOworICAgICAgICAgICAgICAgICB0eXBlLmZvcm1h
dFZhbHVlRnJvbUludExpdGVyYWwgPSB2YWx1ZSA9PiBjYXN0KEludDhBcnJheSwgdmFsdWUpOwor
ICAgICAgICAgICAgICAgICB0eXBlLmZvcm1hdFZhbHVlRnJvbVVpbnRMaXRlcmFsID0gdmFsdWUg
PT4gY2FzdChJbnQ4QXJyYXksIHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgdHlwZS5hbGxWYWx1
ZXMgPSBmdW5jdGlvbiooKSB7CisgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsg
aSA8PSAweGZmOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBj
YXN0KEludDhBcnJheSwgaSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQge3ZhbHVl
OiB2YWx1ZSwgbmFtZTogdmFsdWV9OworICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICB9OworICAgICAgICAgICAgIH0pOworCisgICAgICAgIHRoaXMuX21hcC5zZXQoCisg
ICAgICAgICAgICAgIm5hdGl2ZSB0eXBlZGVmIHNob3J0IiwKKyAgICAgICAgICAgICB0eXBlID0+
IHsKKyAgICAgICAgICAgICAgICAgdGhpcy5zaG9ydCA9IHR5cGU7CisgICAgICAgICAgICAgICAg
IHR5cGUuaXNQcmltaXRpdmUgPSB0cnVlOworICAgICAgICAgICAgICAgICB0eXBlLmlzSW50ID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5pc051bWJlciA9IHRydWU7CisgICAgICAgICAg
ICAgICAgIHR5cGUuaXNTaWduZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICB0eXBlLmNhblJl
cHJlc2VudCA9IHZhbHVlID0+IGlzQml0d2lzZUVxdWl2YWxlbnQoY2FzdChJbnQxNkFycmF5LCB2
YWx1ZSksIHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgdHlwZS5zaXplID0gMTsKKyAgICAgICAg
ICAgICAgICAgdHlwZS5kZWZhdWx0VmFsdWUgPSAwOworICAgICAgICAgICAgICAgICB0eXBlLmNy
ZWF0ZUxpdGVyYWwgPSAob3JpZ2luLCB2YWx1ZSkgPT4gSW50TGl0ZXJhbC53aXRoVHlwZShvcmln
aW4sIGNhc3QoSW50MTZBcnJheSwgdmFsdWUpLCB0eXBlKTsKKyAgICAgICAgICAgICAgICAgdHlw
ZS5zdWNjZXNzb3JWYWx1ZSA9IHZhbHVlID0+IGNhc3QoSW50MTZBcnJheSwgdmFsdWUgKyAxKTsK
KyAgICAgICAgICAgICAgICAgdHlwZS52YWx1ZXNFcXVhbCA9IChhLCBiKSA9PiBhID09PSBiOwor
ICAgICAgICAgICAgICAgICB0eXBlLnBvcHVsYXRlRGVmYXVsdFZhbHVlID0gKGJ1ZmZlciwgb2Zm
c2V0KSA9PiBidWZmZXIuc2V0KG9mZnNldCwgMCk7CisgICAgICAgICAgICAgICAgIHR5cGUuZm9y
bWF0VmFsdWVGcm9tSW50TGl0ZXJhbCA9IHZhbHVlID0+IGNhc3QoSW50MTZBcnJheSwgdmFsdWUp
OworICAgICAgICAgICAgICAgICB0eXBlLmZvcm1hdFZhbHVlRnJvbVVpbnRMaXRlcmFsID0gdmFs
dWUgPT4gY2FzdChJbnQxNkFycmF5LCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgIHR5cGUuYWxs
VmFsdWVzID0gZnVuY3Rpb24qKCkgeworICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9
IDA7IGkgPD0gMHhmZmZmOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdmFs
dWUgPSBjYXN0KEludDE2QXJyYXksIGkpOworICAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxk
IHt2YWx1ZTogdmFsdWUsIG5hbWU6IHZhbHVlfTsKKyAgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICB9KTsKKworICAgICAgICB0aGlzLl9tYXAu
c2V0KAorICAgICAgICAgICAgICJuYXRpdmUgdHlwZWRlZiBpbnQiLAorICAgICAgICAgICAgIHR5
cGUgPT4geworICAgICAgICAgICAgICAgICB0aGlzLmludCA9IHR5cGU7CisgICAgICAgICAgICAg
ICAgIHR5cGUuaXNQcmltaXRpdmUgPSB0cnVlOworICAgICAgICAgICAgICAgICB0eXBlLmlzSW50
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5pc051bWJlciA9IHRydWU7CisgICAgICAg
ICAgICAgICAgIHR5cGUuaXNTaWduZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICB0eXBlLmNh
blJlcHJlc2VudCA9IHZhbHVlID0+IGlzQml0d2lzZUVxdWl2YWxlbnQodmFsdWUgfCAwLCB2YWx1
ZSk7CisgICAgICAgICAgICAgICAgIHR5cGUuc2l6ZSA9IDE7CisgICAgICAgICAgICAgICAgIHR5
cGUuZGVmYXVsdFZhbHVlID0gMDsKKyAgICAgICAgICAgICAgICAgdHlwZS5jcmVhdGVMaXRlcmFs
ID0gKG9yaWdpbiwgdmFsdWUpID0+IEludExpdGVyYWwud2l0aFR5cGUob3JpZ2luLCB2YWx1ZSB8
IDAsIHR5cGUpOworICAgICAgICAgICAgICAgICB0eXBlLnN1Y2Nlc3NvclZhbHVlID0gdmFsdWUg
PT4gKHZhbHVlICsgMSkgfCAwOworICAgICAgICAgICAgICAgICB0eXBlLnZhbHVlc0VxdWFsID0g
KGEsIGIpID0+IGEgPT09IGI7CisgICAgICAgICAgICAgICAgIHR5cGUucG9wdWxhdGVEZWZhdWx0
VmFsdWUgPSAoYnVmZmVyLCBvZmZzZXQpID0+IGJ1ZmZlci5zZXQob2Zmc2V0LCAwKTsKKyAgICAg
ICAgICAgICAgICAgdHlwZS5mb3JtYXRWYWx1ZUZyb21JbnRMaXRlcmFsID0gdmFsdWUgPT4gdmFs
dWUgfCAwOworICAgICAgICAgICAgICAgICB0eXBlLmZvcm1hdFZhbHVlRnJvbVVpbnRMaXRlcmFs
ID0gdmFsdWUgPT4gdmFsdWUgfCAwOworICAgICAgICAgICAgICAgICB0eXBlLmFsbFZhbHVlcyA9
IGZ1bmN0aW9uKigpIHsKKyAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9
IDB4ZmZmZmZmZmY7ICsraSkgeworICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9
IGkgfCAwOworICAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHt2YWx1ZTogdmFsdWUsIG5h
bWU6IHZhbHVlfTsKKyAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgfTsK
KyAgICAgICAgICAgICB9KTsKKworICAgICAgICAgdGhpcy5fbWFwLnNldCgKKyAgICAgICAgICAg
ICAibmF0aXZlIHR5cGVkZWYgaGFsZiIsCisgICAgICAgICAgICAgdHlwZSA9PiB7CisgICAgICAg
ICAgICAgICAgIHRoaXMuaGFsZiA9IHR5cGU7CisgICAgICAgICAgICAgICAgIHR5cGUuaXNQcmlt
aXRpdmUgPSB0cnVlOworICAgICAgICAgICAgICAgICB0eXBlLnNpemUgPSAxOworICAgICAgICAg
ICAgICAgICB0eXBlLmlzRmxvYXRpbmcgPSB0cnVlOworICAgICAgICAgICAgICAgICB0eXBlLmlz
TnVtYmVyID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5jYW5SZXByZXNlbnQgPSB2YWx1
ZSA9PiBpc0JpdHdpc2VFcXVpdmFsZW50KGNhc3RUb0hhbGYodmFsdWUpLCB2YWx1ZSk7CisgICAg
ICAgICAgICAgICAgIHR5cGUucG9wdWxhdGVEZWZhdWx0VmFsdWUgPSAoYnVmZmVyLCBvZmZzZXQp
ID0+IGJ1ZmZlci5zZXQob2Zmc2V0LCAwKTsKKyAgICAgICAgICAgICAgICAgdHlwZS5mb3JtYXRW
YWx1ZUZyb21JbnRMaXRlcmFsID0gdmFsdWUgPT4gdmFsdWU7CisgICAgICAgICAgICAgICAgIHR5
cGUuZm9ybWF0VmFsdWVGcm9tVWludExpdGVyYWwgPSB2YWx1ZSA9PiB2YWx1ZTsKKyAgICAgICAg
ICAgICAgICAgdHlwZS5mb3JtYXRWYWx1ZUZyb21GbG9hdExpdGVyYWwgPSB2YWx1ZSA9PiBjYXN0
VG9IYWxmKHZhbHVlKTsKKyAgICAgICAgICAgICB9KTsKKworICAgICAgICAgdGhpcy5fbWFwLnNl
dCgKKyAgICAgICAgICAgICAibmF0aXZlIHR5cGVkZWYgZmxvYXQiLAorICAgICAgICAgICAgIHR5
cGUgPT4geworICAgICAgICAgICAgICAgICB0aGlzLmZsb2F0ID0gdHlwZTsKKyAgICAgICAgICAg
ICAgICAgdHlwZS5pc1ByaW1pdGl2ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgIHR5cGUuc2l6
ZSA9IDE7CisgICAgICAgICAgICAgICAgIHR5cGUuaXNGbG9hdGluZyA9IHRydWU7CisgICAgICAg
ICAgICAgICAgIHR5cGUuaXNOdW1iZXIgPSB0cnVlOworICAgICAgICAgICAgICAgICB0eXBlLmNh
blJlcHJlc2VudCA9IHZhbHVlID0+IGlzQml0d2lzZUVxdWl2YWxlbnQoTWF0aC5mcm91bmQodmFs
dWUpLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgIHR5cGUucG9wdWxhdGVEZWZhdWx0VmFsdWUg
PSAoYnVmZmVyLCBvZmZzZXQpID0+IGJ1ZmZlci5zZXQob2Zmc2V0LCAwKTsKKyAgICAgICAgICAg
ICAgICAgdHlwZS5mb3JtYXRWYWx1ZUZyb21JbnRMaXRlcmFsID0gdmFsdWUgPT4gdmFsdWU7Cisg
ICAgICAgICAgICAgICAgIHR5cGUuZm9ybWF0VmFsdWVGcm9tVWludExpdGVyYWwgPSB2YWx1ZSA9
PiB2YWx1ZTsKKyAgICAgICAgICAgICAgICAgdHlwZS5mb3JtYXRWYWx1ZUZyb21GbG9hdExpdGVy
YWwgPSB2YWx1ZSA9PiBNYXRoLmZyb3VuZCh2YWx1ZSk7CisgICAgICAgICAgICAgfSk7CisKKyAg
ICAgICAgdGhpcy5fbWFwLnNldCgKKyAgICAgICAgICAgICAibmF0aXZlIHR5cGVkZWYgYXRvbWlj
X2ludCIsCisgICAgICAgICAgICAgdHlwZSA9PiB7CisgICAgICAgICAgICAgICAgIHRoaXMuYXRv
bWljX2ludCA9IHR5cGU7CisgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgdGhpcy5fbWFwLnNl
dCgKKyAgICAgICAgICAgICAibmF0aXZlIHR5cGVkZWYgYXRvbWljX3VpbnQiLAorICAgICAgICAg
ICAgIHR5cGUgPT4geworICAgICAgICAgICAgICAgICB0aGlzLmF0b21pY191aW50ID0gdHlwZTsK
KyAgICAgICAgICAgICB9KTsKIAogICAgICAgICBmb3IgKGxldCB2ZWN0b3JUeXBlIG9mIFZlY3Rv
ckVsZW1lbnRUeXBlcykgewotICAgICAgICAgICAgZm9yIChsZXQgdmVjdG9yU2l6ZSBvZiBWZWN0
b3JFbGVtZW50U2l6ZXMpCi0gICAgICAgICAgICAgICAgdGhpcy5fbWFwLnNldChgbmF0aXZlIHR5
cGVkZWYgdmVjdG9yPCR7dmVjdG9yVHlwZX0sICR7dmVjdG9yU2l6ZX0+YCwgdHlwZSA9PiB7fSk7
CisgICAgICAgICAgICBmb3IgKGxldCB2ZWN0b3JTaXplIG9mIFZlY3RvckVsZW1lbnRTaXplcykg
eworICAgICAgICAgICAgICAgIHRoaXMuX21hcC5zZXQoYG5hdGl2ZSB0eXBlZGVmIHZlY3Rvcjwk
e3ZlY3RvclR5cGV9LCAke3ZlY3RvclNpemV9PmAsIHR5cGUgPT4geworICAgICAgICAgICAgICAg
ICAgICB0aGlzW2B2ZWN0b3I8JHt2ZWN0b3JUeXBlfSwgJHt2ZWN0b3JTaXplfT5gXSA9IHR5cGU7
CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAg
CisKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUgb3BlcmF0b3Ig
aW50KHVpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMu
aW1wbGVtZW50YXRpb24gPSAoW3ZhbHVlXSkgPT4gRVB0ci5ib3godmFsdWUubG9hZFZhbHVlKCkg
fCAwKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0
KAogICAgICAgICAgICAgIm5hdGl2ZSBvcGVyYXRvciBpbnQodWNoYXIpIiwKICAgICAgICAgICAg
IGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW3ZhbHVl
XSkgPT4gRVB0ci5ib3godmFsdWUubG9hZFZhbHVlKCkgfCAwKTsKICAgICAgICAgICAgIH0pOwot
ICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBv
cGVyYXRvciBpbnQoZmxvYXQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAg
ICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW3ZhbHVlXSkgPT4gRVB0ci5ib3godmFsdWUubG9h
ZFZhbHVlKCkgfCAwKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlz
Ll9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBvcGVyYXRvciB1aW50KGludCkiLAogICAg
ICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9
IChbdmFsdWVdKSA9PiBFUHRyLmJveCh2YWx1ZS5sb2FkVmFsdWUoKSA+Pj4gMCk7CiAgICAgICAg
ICAgICB9KTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAg
ICJuYXRpdmUgb3BlcmF0b3IgdWludCh1Y2hhcikiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAg
ICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbdmFsdWVdKSA9PiBFUHRyLmJv
eCh2YWx1ZS5sb2FkVmFsdWUoKSA+Pj4gMCk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgCisK
ICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUgb3BlcmF0b3IgdWlu
dChmbG9hdCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5p
bXBsZW1lbnRhdGlvbiA9IChbdmFsdWVdKSA9PiBFUHRyLmJveCh2YWx1ZS5sb2FkVmFsdWUoKSA+
Pj4gMCk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNl
dCgKICAgICAgICAgICAgICJuYXRpdmUgb3BlcmF0b3IgdWNoYXIoaW50KSIsCiAgICAgICAgICAg
ICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFt2YWx1
ZV0pID0+IEVQdHIuYm94KHZhbHVlLmxvYWRWYWx1ZSgpICYgMHhmZik7CiAgICAgICAgICAgICB9
KTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRp
dmUgb3BlcmF0b3IgdWNoYXIodWludCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAg
ICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbdmFsdWVdKSA9PiBFUHRyLmJveCh2YWx1
ZS5sb2FkVmFsdWUoKSAmIDB4ZmYpOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAg
ICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIG9wZXJhdG9yIHVjaGFyKGZs
b2F0KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxl
bWVudGF0aW9uID0gKFt2YWx1ZV0pID0+IEVQdHIuYm94KHZhbHVlLmxvYWRWYWx1ZSgpICYgMHhm
Zik7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgK
ICAgICAgICAgICAgICJuYXRpdmUgb3BlcmF0b3IgZmxvYXQoaW50KSIsCiAgICAgICAgICAgICBm
dW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFt2YWx1ZV0p
ID0+IEVQdHIuYm94KE1hdGguZnJvdW5kKHZhbHVlLmxvYWRWYWx1ZSgpKSk7CiAgICAgICAgICAg
ICB9KTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJu
YXRpdmUgb3BlcmF0b3IgZmxvYXQodWludCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAg
ICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbdmFsdWVdKSA9PiBFUHRyLmJveChN
YXRoLmZyb3VuZCh2YWx1ZS5sb2FkVmFsdWUoKSkpOwogICAgICAgICAgICAgfSk7Ci0gICAgICAg
IAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIG9wZXJhdG9y
IGZsb2F0KHVjaGFyKSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBm
dW5jLmltcGxlbWVudGF0aW9uID0gKFt2YWx1ZV0pID0+IEVQdHIuYm94KE1hdGguZnJvdW5kKHZh
bHVlLmxvYWRWYWx1ZSgpKSk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgCisKICAgICAgICAg
dGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUgaW50IG9wZXJhdG9yKyhpbnQsaW50
KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVu
dGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+CiAgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94
KChsZWZ0LmxvYWRWYWx1ZSgpICsgcmlnaHQubG9hZFZhbHVlKCkpIHwgMCk7CiAgICAgICAgICAg
ICB9KTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJu
YXRpdmUgdWludCBvcGVyYXRvcisodWludCx1aW50KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsK
ICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+
CiAgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KChsZWZ0LmxvYWRWYWx1ZSgpICsgcmlnaHQu
bG9hZFZhbHVlKCkpID4+PiAwKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAg
ICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBmbG9hdCBvcGVyYXRvcisoZmxv
YXQsZmxvYXQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMu
aW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAg
RVB0ci5ib3goTWF0aC5mcm91bmQobGVmdC5sb2FkVmFsdWUoKSArIHJpZ2h0LmxvYWRWYWx1ZSgp
KSk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgK
ICAgICAgICAgICAgICJuYXRpdmUgaW50IG9wZXJhdG9yLShpbnQsaW50KSIsCiAgICAgICAgICAg
ICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0
LCByaWdodF0pID0+CiAgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KChsZWZ0LmxvYWRWYWx1
ZSgpIC0gcmlnaHQubG9hZFZhbHVlKCkpIHwgMCk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAg
CisKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUgdWludCBvcGVy
YXRvci0odWludCx1aW50KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAg
ICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+CiAgICAgICAgICAgICAg
ICAgICAgIEVQdHIuYm94KChsZWZ0LmxvYWRWYWx1ZSgpIC0gcmlnaHQubG9hZFZhbHVlKCkpID4+
PiAwKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0
KAogICAgICAgICAgICAgIm5hdGl2ZSBmbG9hdCBvcGVyYXRvci0oZmxvYXQsZmxvYXQpIiwKICAg
ICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24g
PSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3goTWF0aC5m
cm91bmQobGVmdC5sb2FkVmFsdWUoKSAtIHJpZ2h0LmxvYWRWYWx1ZSgpKSk7CiAgICAgICAgICAg
ICB9KTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJu
YXRpdmUgaW50IG9wZXJhdG9yKihpbnQsaW50KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKQEAg
LTI3NiwyMjkgKzQzNiwyMjkgQEAgY2xhc3MgSW50cmluc2ljcyB7CiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBFUHRyLmJveCgobGVmdC5sb2FkVmFsdWUoKSAqIHJpZ2h0LmxvYWRWYWx1ZSgp
KSB8IDApOwogICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgCisK
ICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUgdWludCBvcGVyYXRv
cioodWludCx1aW50KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBm
dW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+CiAgICAgICAgICAgICAgICAg
ICAgIEVQdHIuYm94KChsZWZ0LmxvYWRWYWx1ZSgpICogcmlnaHQubG9hZFZhbHVlKCkpID4+PiAw
KTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAog
ICAgICAgICAgICAgIm5hdGl2ZSBmbG9hdCBvcGVyYXRvciooZmxvYXQsZmxvYXQpIiwKICAgICAg
ICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAo
W2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3goTWF0aC5mcm91
bmQobGVmdC5sb2FkVmFsdWUoKSAqIHJpZ2h0LmxvYWRWYWx1ZSgpKSk7CiAgICAgICAgICAgICB9
KTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRp
dmUgaW50IG9wZXJhdG9yLyhpbnQsaW50KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAg
ICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+CiAgICAg
ICAgICAgICAgICAgICAgIEVQdHIuYm94KChsZWZ0LmxvYWRWYWx1ZSgpIC8gcmlnaHQubG9hZFZh
bHVlKCkpIHwgMCk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5f
bWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUgdWludCBvcGVyYXRvci8odWludCx1aW50KSIs
CiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0
aW9uID0gKFtsZWZ0LCByaWdodF0pID0+CiAgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KChs
ZWZ0LmxvYWRWYWx1ZSgpIC8gcmlnaHQubG9hZFZhbHVlKCkpID4+PiAwKTsKICAgICAgICAgICAg
IH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5h
dGl2ZSBpbnQgb3BlcmF0b3ImKGludCxpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAg
ICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAg
ICAgICAgICAgICAgICAgICAgRVB0ci5ib3gobGVmdC5sb2FkVmFsdWUoKSAmIHJpZ2h0LmxvYWRW
YWx1ZSgpKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAu
c2V0KAogICAgICAgICAgICAgIm5hdGl2ZSB1aW50IG9wZXJhdG9yJih1aW50LHVpbnQpIiwKICAg
ICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24g
PSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3goKGxlZnQu
bG9hZFZhbHVlKCkgJiByaWdodC5sb2FkVmFsdWUoKSkgPj4+IDApOwogICAgICAgICAgICAgfSk7
Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZl
IGludCBvcGVyYXRvcnwoaW50LGludCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAg
ICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PgogICAgICAg
ICAgICAgICAgICAgICBFUHRyLmJveChsZWZ0LmxvYWRWYWx1ZSgpIHwgcmlnaHQubG9hZFZhbHVl
KCkpOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQo
CiAgICAgICAgICAgICAibmF0aXZlIHVpbnQgb3BlcmF0b3J8KHVpbnQsdWludCkiLAogICAgICAg
ICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChb
bGVmdCwgcmlnaHRdKSA9PgogICAgICAgICAgICAgICAgICAgICBFUHRyLmJveCgobGVmdC5sb2Fk
VmFsdWUoKSB8IHJpZ2h0LmxvYWRWYWx1ZSgpKSA+Pj4gMCk7CiAgICAgICAgICAgICB9KTsKLSAg
ICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUgaW50
IG9wZXJhdG9yXihpbnQsaW50KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAg
ICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+CiAgICAgICAgICAg
ICAgICAgICAgIEVQdHIuYm94KGxlZnQubG9hZFZhbHVlKCkgXiByaWdodC5sb2FkVmFsdWUoKSk7
CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAg
ICAgICAgICAgICJuYXRpdmUgdWludCBvcGVyYXRvcl4odWludCx1aW50KSIsCiAgICAgICAgICAg
ICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0
LCByaWdodF0pID0+CiAgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KChsZWZ0LmxvYWRWYWx1
ZSgpIF4gcmlnaHQubG9hZFZhbHVlKCkpID4+PiAwKTsKICAgICAgICAgICAgIH0pOwotICAgICAg
ICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBpbnQgb3Bl
cmF0b3I8PChpbnQsdWludCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAg
ICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PgogICAgICAgICAgICAg
ICAgICAgICBFUHRyLmJveChsZWZ0LmxvYWRWYWx1ZSgpIDw8IHJpZ2h0LmxvYWRWYWx1ZSgpKTsK
ICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAg
ICAgICAgICAgIm5hdGl2ZSB1aW50IG9wZXJhdG9yPDwodWludCx1aW50KSIsCiAgICAgICAgICAg
ICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0
LCByaWdodF0pID0+CiAgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KChsZWZ0LmxvYWRWYWx1
ZSgpIDw8IHJpZ2h0LmxvYWRWYWx1ZSgpKSA+Pj4gMCk7CiAgICAgICAgICAgICB9KTsKLSAgICAg
ICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUgaW50IG9w
ZXJhdG9yPj4oaW50LHVpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAg
ICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAg
ICAgICAgICAgRVB0ci5ib3gobGVmdC5sb2FkVmFsdWUoKSA+PiByaWdodC5sb2FkVmFsdWUoKSk7
CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAg
ICAgICAgICAgICJuYXRpdmUgdWludCBvcGVyYXRvcj4+KHVpbnQsdWludCkiLAogICAgICAgICAg
ICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbbGVm
dCwgcmlnaHRdKSA9PgogICAgICAgICAgICAgICAgICAgICBFUHRyLmJveChsZWZ0LmxvYWRWYWx1
ZSgpID4+PiByaWdodC5sb2FkVmFsdWUoKSk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgCisK
ICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUgaW50IG9wZXJhdG9y
fihpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1w
bGVtZW50YXRpb24gPSAoW3ZhbHVlXSkgPT4gRVB0ci5ib3gofnZhbHVlLmxvYWRWYWx1ZSgpKTsK
ICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAg
ICAgICAgICAgIm5hdGl2ZSB1aW50IG9wZXJhdG9yfih1aW50KSIsCiAgICAgICAgICAgICBmdW5j
ID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFt2YWx1ZV0pID0+
IEVQdHIuYm94KCh+dmFsdWUubG9hZFZhbHVlKCkpID4+PiAwKTsKICAgICAgICAgICAgIH0pOwot
ICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBm
bG9hdCBvcGVyYXRvci8oZmxvYXQsZmxvYXQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAg
ICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAg
ICAgICAgICAgICAgICAgICAgRVB0ci5ib3goTWF0aC5mcm91bmQobGVmdC5sb2FkVmFsdWUoKSAv
IHJpZ2h0LmxvYWRWYWx1ZSgpKSk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgCisKICAgICAg
ICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUgYm9vbCBvcGVyYXRvcj09KGlu
dCxpbnQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1w
bGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0
ci5ib3gobGVmdC5sb2FkVmFsdWUoKSA9PSByaWdodC5sb2FkVmFsdWUoKSk7CiAgICAgICAgICAg
ICB9KTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJu
YXRpdmUgYm9vbCBvcGVyYXRvcj09KHVpbnQsdWludCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7
CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9
PgogICAgICAgICAgICAgICAgICAgICBFUHRyLmJveChsZWZ0LmxvYWRWYWx1ZSgpID09IHJpZ2h0
LmxvYWRWYWx1ZSgpKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlz
Ll9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBib29sIG9wZXJhdG9yPT0oYm9vbCxib29s
KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVu
dGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+CiAgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94
KGxlZnQubG9hZFZhbHVlKCkgPT0gcmlnaHQubG9hZFZhbHVlKCkpOwogICAgICAgICAgICAgfSk7
Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZl
IGJvb2wgb3BlcmF0b3I9PShmbG9hdCxmbG9hdCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAg
ICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9Pgog
ICAgICAgICAgICAgICAgICAgICBFUHRyLmJveChsZWZ0LmxvYWRWYWx1ZSgpID09IHJpZ2h0Lmxv
YWRWYWx1ZSgpKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9t
YXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBib29sIG9wZXJhdG9yPChpbnQsaW50KSIsCiAg
ICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9u
ID0gKFtsZWZ0LCByaWdodF0pID0+CiAgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KGxlZnQu
bG9hZFZhbHVlKCkgPCByaWdodC5sb2FkVmFsdWUoKSk7CiAgICAgICAgICAgICB9KTsKLSAgICAg
ICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUgYm9vbCBv
cGVyYXRvcjwodWludCx1aW50KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAg
ICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+CiAgICAgICAgICAg
ICAgICAgICAgIEVQdHIuYm94KGxlZnQubG9hZFZhbHVlKCkgPCByaWdodC5sb2FkVmFsdWUoKSk7
CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAg
ICAgICAgICAgICJuYXRpdmUgYm9vbCBvcGVyYXRvcjwoZmxvYXQsZmxvYXQpIiwKICAgICAgICAg
ICAgIGZ1bmMgPT4gewogICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xl
ZnQsIHJpZ2h0XSkgPT4KICAgICAgICAgICAgICAgICAgICAgRVB0ci5ib3gobGVmdC5sb2FkVmFs
dWUoKSA8IHJpZ2h0LmxvYWRWYWx1ZSgpKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwog
ICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBib29sIG9wZXJhdG9y
PD0oaW50LGludCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVu
Yy5pbXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PgogICAgICAgICAgICAgICAgICAg
ICBFUHRyLmJveChsZWZ0LmxvYWRWYWx1ZSgpIDw9IHJpZ2h0LmxvYWRWYWx1ZSgpKTsKICAgICAg
ICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAg
ICAgIm5hdGl2ZSBib29sIG9wZXJhdG9yPD0odWludCx1aW50KSIsCiAgICAgICAgICAgICBmdW5j
ID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdo
dF0pID0+CiAgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KGxlZnQubG9hZFZhbHVlKCkgPD0g
cmlnaHQubG9hZFZhbHVlKCkpOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAg
IHRoaXMuX21hcC5zZXQoCiAgICAgICAgICAgICAibmF0aXZlIGJvb2wgb3BlcmF0b3I8PShmbG9h
dCxmbG9hdCkiLAogICAgICAgICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5p
bXBsZW1lbnRhdGlvbiA9IChbbGVmdCwgcmlnaHRdKSA9PgogICAgICAgICAgICAgICAgICAgICBF
UHRyLmJveChsZWZ0LmxvYWRWYWx1ZSgpIDw9IHJpZ2h0LmxvYWRWYWx1ZSgpKTsKICAgICAgICAg
ICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAg
Im5hdGl2ZSBib29sIG9wZXJhdG9yPihpbnQsaW50KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsK
ICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+
CiAgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KGxlZnQubG9hZFZhbHVlKCkgPiByaWdodC5s
b2FkVmFsdWUoKSk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5f
bWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUgYm9vbCBvcGVyYXRvcj4odWludCx1aW50KSIs
CiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0
aW9uID0gKFtsZWZ0LCByaWdodF0pID0+CiAgICAgICAgICAgICAgICAgICAgIEVQdHIuYm94KGxl
ZnQubG9hZFZhbHVlKCkgPiByaWdodC5sb2FkVmFsdWUoKSk7CiAgICAgICAgICAgICB9KTsKLSAg
ICAgICAgCisKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAgICAgICAgICAgICJuYXRpdmUgYm9v
bCBvcGVyYXRvcj4oZmxvYXQsZmxvYXQpIiwKICAgICAgICAgICAgIGZ1bmMgPT4gewogICAgICAg
ICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSAoW2xlZnQsIHJpZ2h0XSkgPT4KICAgICAg
ICAgICAgICAgICAgICAgRVB0ci5ib3gobGVmdC5sb2FkVmFsdWUoKSA+IHJpZ2h0LmxvYWRWYWx1
ZSgpKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAKKwogICAgICAgICB0aGlzLl9tYXAuc2V0
KAogICAgICAgICAgICAgIm5hdGl2ZSBib29sIG9wZXJhdG9yPj0oaW50LGludCkiLAogICAgICAg
ICAgICAgZnVuYyA9PiB7CiAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IChb
bGVmdCwgcmlnaHRdKSA9PgogICAgICAgICAgICAgICAgICAgICBFUHRyLmJveChsZWZ0LmxvYWRW
YWx1ZSgpID49IHJpZ2h0LmxvYWRWYWx1ZSgpKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICAK
KwogICAgICAgICB0aGlzLl9tYXAuc2V0KAogICAgICAgICAgICAgIm5hdGl2ZSBib29sIG9wZXJh
dG9yPj0odWludCx1aW50KSIsCiAgICAgICAgICAgICBmdW5jID0+IHsKICAgICAgICAgICAgICAg
ICBmdW5jLmltcGxlbWVudGF0aW9uID0gKFtsZWZ0LCByaWdodF0pID0+CiAgICAgICAgICAgICAg
ICAgICAgIEVQdHIuYm94KGxlZnQubG9hZFZhbHVlKCkgPj0gcmlnaHQubG9hZFZhbHVlKCkpOwog
ICAgICAgICAgICAgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX21hcC5zZXQoCiAgICAg
ICAgICAgICAibmF0aXZlIGJvb2wgb3BlcmF0b3I+PShmbG9hdCxmbG9hdCkiLAogICAgICAgICAg
ICAgZnVuYyA9PiB7CkBAIC01MzgsNyArNjk4LDcgQEAgY2xhc3MgSW50cmluc2ljcyB7CiAgICAg
ICAgIGZvciAobGV0IHNldHRlciBvZiBCdWlsdGluVmVjdG9yU2V0dGVyLmZ1bmN0aW9ucygpKQog
ICAgICAgICAgICAgdGhpcy5fbWFwLnNldChzZXR0ZXIudG9TdHJpbmcoKSwgZnVuYyA9PiBzZXR0
ZXIuaW5zdGFudGlhdGVJbXBsZW1lbnRhdGlvbihmdW5jKSk7CiAgICAgfQotICAgIAorCiAgICAg
YWRkKHRoaW5nKQogICAgIHsKICAgICAgICAgbGV0IGludHJpbnNpYyA9IHRoaXMuX21hcC5nZXQo
dGhpbmcudG9TdHJpbmcoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9OYW1lQ29udGV4dC5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05hbWVD
b250ZXh0LmpzCmluZGV4IDFiYWIzZmM1NjAyNjAxMDc3YjNmYTg4NWE2MDU0YWI4NjBiMGExOTMu
LmRjNjg1NzhmZjU1NmIzMTJiMDkyN2VmM2MwZGZmYTAwNjhmMWJlNjMgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05hbWVDb250ZXh0LmpzCisrKyBiL1Rvb2xzL1dl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL05hbWVDb250ZXh0LmpzCkBAIC02OSwxMSArNjksMzMgQEAg
Y2xhc3MgTmFtZUNvbnRleHQgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKKyAg
ICAgICAgaWYgKHRoaW5nLmtpbmQgPT0gVHlwZSkgeworICAgICAgICAgICAgdGhpcy5fc2V0LmFk
ZCh0aGluZyk7CisgICAgICAgICAgICBpZiAodGhpbmcubmFtZSA9PSAidmVjdG9yIikgeworICAg
ICAgICAgICAgICAgIGxldCBhcnJheSA9IHRoaXMuX21hcC5nZXQodGhpbmcubmFtZSk7CisgICAg
ICAgICAgICAgICAgaWYgKCFhcnJheSkgeworICAgICAgICAgICAgICAgICAgICBhcnJheSA9IFtd
OworICAgICAgICAgICAgICAgICAgICBhcnJheS5raW5kID0gVHlwZTsKKyAgICAgICAgICAgICAg
ICAgICAgdGhpcy5fbWFwLnNldCh0aGluZy5uYW1lLCBhcnJheSk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGlmIChhcnJheS5raW5kICE9IFR5cGUpCisgICAgICAgICAgICAg
ICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9yKHRoaW5nLm9yaWdpbi5vcmlnaW5TdHJpbmcsICJD
YW5ub3QgcmV1c2UgdHlwZSBuYW1lIGZvciBmdW5jdGlvbjogIiArIHRoaW5nLm5hbWUpOworICAg
ICAgICAgICAgICAgIGFycmF5LnB1c2godGhpbmcpOworICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKHRoaXMuX21hcC5oYXMo
dGhpbmcubmFtZSkpCisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9yKHRo
aW5nLm9yaWdpbi5vcmlnaW5TdHJpbmcsICJEdXBsaWNhdGUgbmFtZTogIiArIHRoaW5nLm5hbWUp
OworICAgICAgICAgICAgICAgIHRoaXMuX21hcC5zZXQodGhpbmcubmFtZSwgdGhpbmcpOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAogICAg
ICAgICBpZiAodGhpcy5fbWFwLmhhcyh0aGluZy5uYW1lKSkKICAgICAgICAgICAgIHRocm93IG5l
dyBXVHlwZUVycm9yKHRoaW5nLm9yaWdpbi5vcmlnaW5TdHJpbmcsICJEdXBsaWNhdGUgbmFtZTog
IiArIHRoaW5nLm5hbWUpOwogCiAgICAgICAgIHRoaXMuX3NldC5hZGQodGhpbmcpOwogICAgICAg
ICB0aGlzLl9tYXAuc2V0KHRoaW5nLm5hbWUsIHRoaW5nKTsKKwogICAgIH0KICAgICAKICAgICBn
ZXQoa2luZCwgbmFtZSkKQEAgLTEwMiw2ICsxMjQsMTAgQEAgY2xhc3MgTmFtZUNvbnRleHQgewog
ICAgICAgICAgICAgZm9yIChsZXQgZnVuYyBvZiB0aGluZykKICAgICAgICAgICAgICAgICB5aWVs
ZCBmdW5jOwogICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9IGVsc2UgaWYgKHRoaW5nLmtp
bmQgPT09IFR5cGUgJiYgKHRoaW5nIGluc3RhbmNlb2YgQXJyYXkpKSB7CisgICAgICAgICAgICBm
b3IgKGxldCB0eXBlIG9mIHRoaW5nKQorICAgICAgICAgICAgICAgIHlpZWxkIHR5cGU7CisgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgeWllbGQgdGhpbmc7CiAgICAgfQpA
QCAtMTYzLDggKzE4OSw4IEBAIGNsYXNzIE5hbWVDb250ZXh0IHsKICAgICB7CiAgICAgICAgIGZv
ciAobGV0IHZhbHVlIG9mIHRoaXMuX21hcC52YWx1ZXMoKSkgewogICAgICAgICAgICAgaWYgKHZh
bHVlIGluc3RhbmNlb2YgQXJyYXkpIHsKLSAgICAgICAgICAgICAgICBmb3IgKGxldCBmdW5jIG9m
IHZhbHVlKQotICAgICAgICAgICAgICAgICAgICB5aWVsZCBmdW5jOworICAgICAgICAgICAgICAg
IGZvciAobGV0IHRoaW5nIG9mIHZhbHVlKQorICAgICAgICAgICAgICAgICAgICB5aWVsZCB0aGlu
ZzsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IHlpZWxkIHZhbHVlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
TmFtZVJlc29sdmVyLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmFtZVJlc29s
dmVyLmpzCmluZGV4IGY2MTVhMmZiNGU4N2RjMWRlYjdiMDFiNTcyZmI3YWY2MjZhYmQwOTUuLjlh
MDk5ZjQ4NWU2ZTkyN2UxNjQzN2JiZjgyNjQxZjYxZTQ1MjVjZjEgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05hbWVSZXNvbHZlci5qcworKysgYi9Ub29scy9XZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYW1lUmVzb2x2ZXIuanMKQEAgLTEyMCwxMiArMTIwLDE5IEBA
IGNsYXNzIE5hbWVSZXNvbHZlciBleHRlbmRzIFZpc2l0b3IgewogICAgIAogICAgIHZpc2l0VHlw
ZVJlZihub2RlKQogICAgIHsKKyAgICAgICAgc3VwZXIudmlzaXRUeXBlUmVmKG5vZGUpOwogICAg
ICAgICBsZXQgdHlwZSA9IG5vZGUudHlwZTsKICAgICAgICAgaWYgKCF0eXBlKSB7CiAgICAgICAg
ICAgICB0eXBlID0gdGhpcy5fbmFtZUNvbnRleHQuZ2V0KFR5cGUsIG5vZGUubmFtZSk7CiAgICAg
ICAgICAgICBpZiAoIXR5cGUpCiAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3Io
bm9kZS5vcmlnaW4ub3JpZ2luU3RyaW5nLCAiQ291bGQgbm90IGZpbmQgdHlwZSBuYW1lZCAiICsg
bm9kZS5uYW1lKTsKLSAgICAgICAgICAgIG5vZGUudHlwZSA9IHR5cGU7CisgICAgICAgICAgICBp
ZiAodHlwZSBpbnN0YW5jZW9mIEFycmF5KSB7CisgICAgICAgICAgICAgICAgLy8gVHlwZSB1bmlm
aWNhdGlvbiByZXF1aXJlcyB0aGUgLnR5cGUgdmFsdWUgdG8gYmUgc2V0IGFscmVhZHksIHNvIHdl
IGNhbiBlYWdlcmx5IHNldCBpdCBub3cuCisgICAgICAgICAgICAgICAgZm9yIChsZXQgb3Zlcmxv
YWQgb2YgdHlwZSkKKyAgICAgICAgICAgICAgICAgICAgTm9kZS52aXNpdChvdmVybG9hZCwgdGhp
cyk7CisgICAgICAgICAgICAgICAgbm9kZS5yZXNvbHZlKHR5cGUpOworICAgICAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICAgICAgbm9kZS50eXBlID0gdHlwZTsKICAgICAgICAgfQogICAgIH0K
ICAgICAKQEAgLTIwOCw5ICsyMTUsNCBAQCBjbGFzcyBOYW1lUmVzb2x2ZXIgZXh0ZW5kcyBWaXNp
dG9yIHsKICAgICAgICAgCiAgICAgICAgIHN1cGVyLnZpc2l0Q2FsbEV4cHJlc3Npb24obm9kZSk7
CiAgICAgfQotCi0gICAgdmlzaXRWZWN0b3JUeXBlKG5vZGUpCi0gICAgewotICAgICAgICBub2Rl
LmVsZW1lbnRUeXBlLnZpc2l0KHRoaXMpOwotICAgIH0KIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL05hdGl2ZVR5cGUuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9OYXRpdmVUeXBlLmpzCmluZGV4IGUyZDg1MWNiY2NiYTNhOTcyMzRjN2JkMzky
OTA3ODI5Y2E5ZTA1ZjIuLjIzODFiNWE2YjBiMDEwZTBmZGQ0ZGM1MzU1MGE4ZWE2YjRmODM0N2Ig
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05hdGl2ZVR5cGUuanMK
KysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmF0aXZlVHlwZS5qcwpAQCAtMjUs
MTEgKzI1LDE0IEBACiAidXNlIHN0cmljdCI7CiAKIGNsYXNzIE5hdGl2ZVR5cGUgZXh0ZW5kcyBU
eXBlIHsKLSAgICBjb25zdHJ1Y3RvcihvcmlnaW4sIG5hbWUpCisgICAgY29uc3RydWN0b3Iob3Jp
Z2luLCBuYW1lLCB0eXBlQXJndW1lbnRzKQogICAgIHsKKyAgICAgICAgaWYgKCEodHlwZUFyZ3Vt
ZW50cyBpbnN0YW5jZW9mIEFycmF5KSkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigidHlw
ZSBwYXJhbWV0ZXJzIG5vdCBhcnJheTogIiArIHR5cGVBcmd1bWVudHMpOwogICAgICAgICBzdXBl
cigpOwogICAgICAgICB0aGlzLl9vcmlnaW4gPSBvcmlnaW47CiAgICAgICAgIHRoaXMuX25hbWUg
PSBuYW1lOworICAgICAgICB0aGlzLl90eXBlQXJndW1lbnRzID0gdHlwZUFyZ3VtZW50czsKICAg
ICAgICAgdGhpcy5faXNOdW1iZXIgPSBmYWxzZTsKICAgICAgICAgdGhpcy5faXNJbnQgPSBmYWxz
ZTsKICAgICAgICAgdGhpcy5faXNGbG9hdGluZyA9IGZhbHNlOwpAQCAtMzgsNiArNDEsNyBAQCBj
bGFzcyBOYXRpdmVUeXBlIGV4dGVuZHMgVHlwZSB7CiAgICAgCiAgICAgZ2V0IG9yaWdpbigpIHsg
cmV0dXJuIHRoaXMuX29yaWdpbjsgfQogICAgIGdldCBuYW1lKCkgeyByZXR1cm4gdGhpcy5fbmFt
ZTsgfQorICAgIGdldCB0eXBlQXJndW1lbnRzKCkgeyByZXR1cm4gdGhpcy5fdHlwZUFyZ3VtZW50
czsgfQogICAgIGdldCBpc05hdGl2ZSgpIHsgcmV0dXJuIHRydWU7IH0KICAgICAKICAgICAvLyBX
ZSBsZXQgSW50cmluc2ljcy5qcyBzZXQgdGhlc2UgYXMgaXQgbGlrZXMuCkBAIC01MiwxOSArNTYs
MTggQEAgY2xhc3MgTmF0aXZlVHlwZSBleHRlbmRzIFR5cGUgewogICAgIAogICAgIHRvU3RyaW5n
KCkKICAgICB7Ci0gICAgICAgIHJldHVybiBgbmF0aXZlIHR5cGVkZWYgJHt0aGlzLm5hbWV9YDsK
KyAgICAgICAgbGV0IHJlc3VsdCA9IGBuYXRpdmUgdHlwZWRlZiAke3RoaXMubmFtZX1gOworICAg
ICAgICBpZiAodGhpcy50eXBlQXJndW1lbnRzLmxlbmd0aCkKKyAgICAgICAgICAgIHJlc3VsdCAr
PSAiPCIgKyB0aGlzLnR5cGVBcmd1bWVudHMuam9pbigiLCIpICsgIj4iOworICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgIH0KICAgICAKICAgICBzdGF0aWMgY3JlYXRlKG9yaWdpbiwgbmFtZSwg
dHlwZUFyZ3VtZW50cykKICAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBGb3IgbmF0aXZlIHR5cGVz
IGxpa2UgVGV4dHVyZTFEIHRoaXMgc2hvdWxkIHJlc29sdmUgdGhlIHR5cGUgdG8gc29tZXRoaW5n
IGNvbmNyZXRlIGJ5IGNoYW5naW5nIHRoZSB0eXBlIG5hbWUuCi0gICAgICAgIGlmICh0eXBlQXJn
dW1lbnRzLmxlbmd0aCkKLSAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9yKG9yaWdpbi5v
cmlnaW5TdHJpbmcsIGAke25hbWV9PCR7dHlwZUFyZ3VtZW50cy5qb2luKCIsIil9PjogU3VwcG9y
dCBmb3IgbmF0aXZlIHR5cGVzIHdpdGggdHlwZSBhcmd1bWVudHMgaXMgY3VycmVudGx5IHVuaW1w
bGVtZW50ZWQuYCk7CisgICAgICAgIGlmIChuYW1lID09ICJ2ZWN0b3IiKQorICAgICAgICAgICAg
cmV0dXJuIG5ldyBWZWN0b3JUeXBlKG9yaWdpbiwgbmFtZSwgdHlwZUFyZ3VtZW50cyk7CiAKLSAg
ICAgICAgaWYgKGFsbFZlY3RvclR5cGVOYW1lcygpLmluZGV4T2YobmFtZSkgPiAtMSkKLSAgICAg
ICAgICAgIHJldHVybiBuZXcgVmVjdG9yVHlwZShvcmlnaW4sIG5hbWUpOwotCi0gICAgICAgIHJl
dHVybiBuZXcgTmF0aXZlVHlwZShvcmlnaW4sIG5hbWUpOworICAgICAgICByZXR1cm4gbmV3IE5h
dGl2ZVR5cGUob3JpZ2luLCBuYW1lLCB0eXBlQXJndW1lbnRzKTsKICAgICB9CiB9CiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1ByZXBhcmUuanMgYi9Ub29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QcmVwYXJlLmpzCmluZGV4IDdiMTYxMzllOTViODFlMmU4
ZGE4MzU0YmQ4YzE3OWIxOTBiYWVmYTAuLjlmYWNhODZlMjA1NzU1YjJjNmE2NmY0MTJiNTY5MmU5
OWU3YjAzYWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1ByZXBh
cmUuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUHJlcGFyZS5qcwpAQCAt
NDAsNyArNDAsNiBAQCBsZXQgcHJlcGFyZSA9ICgoKSA9PiB7CiAgICAgICAgIH0KICAgICAgICAg
CiAgICAgICAgIGZvbGRDb25zdGV4cHJzKHByb2dyYW0pOwotICAgICAgICByZW1vdmVUeXBlQXJn
dW1lbnRzKHByb2dyYW0pOwogCiAgICAgICAgIGxldCBuYW1lUmVzb2x2ZXIgPSBjcmVhdGVOYW1l
UmVzb2x2ZXIocHJvZ3JhbSk7CiAgICAgICAgIHJlc29sdmVOYW1lc0luVHlwZXMocHJvZ3JhbSwg
bmFtZVJlc29sdmVyKTsKQEAgLTU0LDYgKzUzLDcgQEAgbGV0IHByZXBhcmUgPSAoKCkgPT4gewog
ICAgICAgICBzeW50aGVzaXplRGVmYXVsdENvbnN0cnVjdG9yT3BlcmF0b3IocHJvZ3JhbSk7CiAg
ICAgICAgIHJlc29sdmVOYW1lc0luRnVuY3Rpb25zKHByb2dyYW0sIG5hbWVSZXNvbHZlcik7CiAg
ICAgICAgIHJlc29sdmVUeXBlRGVmc0luRnVuY3Rpb25zKHByb2dyYW0pOworICAgICAgICBjaGVj
a1R5cGVzV2l0aEFyZ3VtZW50cyhwcm9ncmFtKTsKICAgICAgICAgCiAgICAgICAgIGNoZWNrKHBy
b2dyYW0pOwogICAgICAgICBjaGVja0xpdGVyYWxUeXBlcyhwcm9ncmFtKTsKQEAgLTY2LDYgKzY2
LDcgQEAgbGV0IHByZXBhcmUgPSAoKCkgPT4gewogICAgICAgICBjaGVja0xvb3BzKHByb2dyYW0p
OwogICAgICAgICBjaGVja1JlY3Vyc2lvbihwcm9ncmFtKTsKICAgICAgICAgY2hlY2tQcm9ncmFt
V3JhcHBlZChwcm9ncmFtKTsKKyAgICAgICAgY2hlY2tUeXBlc1dpdGhBcmd1bWVudHMocHJvZ3Jh
bSk7CiAgICAgICAgIGZpbmRIaWdoWm9tYmllcyhwcm9ncmFtKTsKICAgICAgICAgcHJvZ3JhbS52
aXNpdChuZXcgU3RydWN0TGF5b3V0QnVpbGRlcigpKTsKICAgICAgICAgaW5saW5lKHByb2dyYW0p
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUHJvZ3JhbS5qcyBi
L1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Byb2dyYW0uanMKaW5kZXggMDY2MjVkOThm
YzQxZTc0YzkzZGVjZTgwYjcwY2U1NWM3YWY3NGRkNS4uMTExNmM0ZjU3NzU2MjIxNWZkZDc0Mjhh
MzE3NTc5YTkyOTE2NTQxNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvUHJvZ3JhbS5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9Qcm9ncmFt
LmpzCkBAIC00OCwxOSArNDgsMjUgQEAgY2xhc3MgUHJvZ3JhbSBleHRlbmRzIE5vZGUgewogICAg
ICAgICBpZiAoc3RhdGVtZW50IGluc3RhbmNlb2YgRnVuYykgewogICAgICAgICAgICAgbGV0IGFy
cmF5ID0gdGhpcy5fZnVuY3Rpb25zLmdldChzdGF0ZW1lbnQubmFtZSk7CiAgICAgICAgICAgICBp
ZiAoIWFycmF5KQotICAgICAgICAgICAgICAgIHRoaXMuX2Z1bmN0aW9ucy5zZXQoc3RhdGVtZW50
Lm5hbWUsIGFycmF5ID0gW10pOworICAgICAgICAgICAgICAgIHRoaXMuZnVuY3Rpb25zLnNldChz
dGF0ZW1lbnQubmFtZSwgYXJyYXkgPSBbXSk7CiAgICAgICAgICAgICBhcnJheS5wdXNoKHN0YXRl
bWVudCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoc3RhdGVtZW50IGluc3RhbmNlb2YgVHlwZSkKLSAg
ICAgICAgICAgIHRoaXMuX3R5cGVzLnNldChzdGF0ZW1lbnQubmFtZSwgc3RhdGVtZW50KTsKLSAg
ICAgICAgZWxzZQorICAgICAgICB9IGVsc2UgaWYgKHN0YXRlbWVudCBpbnN0YW5jZW9mIFR5cGUp
IHsKKyAgICAgICAgICAgIGlmIChzdGF0ZW1lbnQuaXNOYXRpdmUgJiYgc3RhdGVtZW50Lm5hbWUg
PT0gInZlY3RvciIpIHsKKyAgICAgICAgICAgICAgICBsZXQgYXJyYXkgPSB0aGlzLnR5cGVzLmdl
dChzdGF0ZW1lbnQubmFtZSk7CisgICAgICAgICAgICAgICAgaWYgKCFhcnJheSkKKyAgICAgICAg
ICAgICAgICAgICAgdGhpcy50eXBlcy5zZXQoc3RhdGVtZW50Lm5hbWUsIGFycmF5ID0gW10pOwor
ICAgICAgICAgICAgICAgIGFycmF5LnB1c2goc3RhdGVtZW50KTsKKyAgICAgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgICAgIHRoaXMudHlwZXMuc2V0KHN0YXRlbWVudC5uYW1lLCBzdGF0ZW1l
bnQpOworICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiU3RhdGVt
ZW50IGlzIG5vdCBhIGZ1bmN0aW9uIG9yIHR5cGU6ICIgKyBzdGF0ZW1lbnQpOwotICAgICAgICB0
aGlzLl90b3BMZXZlbFN0YXRlbWVudHMucHVzaChzdGF0ZW1lbnQpOwotICAgICAgICB0aGlzLl9n
bG9iYWxOYW1lQ29udGV4dC5hZGQoc3RhdGVtZW50KTsKKyAgICAgICAgdGhpcy50b3BMZXZlbFN0
YXRlbWVudHMucHVzaChzdGF0ZW1lbnQpOworICAgICAgICB0aGlzLmdsb2JhbE5hbWVDb250ZXh0
LmFkZChzdGF0ZW1lbnQpOwogICAgIH0KICAgICAKICAgICB0b1N0cmluZygpCiAgICAgewotICAg
ICAgICBpZiAoIXRoaXMuX3RvcExldmVsU3RhdGVtZW50cy5sZW5ndGgpCisgICAgICAgIGlmICgh
dGhpcy50b3BMZXZlbFN0YXRlbWVudHMubGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuICIiOwog
ICAgICAgICByZXR1cm4gdGhpcy5fdG9wTGV2ZWxTdGF0ZW1lbnRzLmpvaW4oIjsiKSArICI7IjsK
ICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZW1vdmVU
eXBlQXJndW1lbnRzLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmVtb3ZlVHlw
ZUFyZ3VtZW50cy5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTNkYjllNjQ3Yzky
MWM5NTRlODk5OGNlMTY3NWRlN2NiNjFmMTQyYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZW1vdmVU
eXBlQXJndW1lbnRzLmpzCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0idXNlIHN0cmljdCI7Ci0KLWZ1bmN0
aW9uIHJlbW92ZVR5cGVBcmd1bWVudHMocHJvZ3JhbSkKLXsKLSAgICBjbGFzcyBSZW1vdmVUeXBl
QXJndW1lbnRzIGV4dGVuZHMgVmlzaXRvciB7Ci0gICAgICAgIHN0YXRpYyByZXNvbHZlTmFtZUFu
ZEFyZ3VtZW50cyhub2RlKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW5vZGUudHlwZUFy
Z3VtZW50cykKLSAgICAgICAgICAgICAgICByZXR1cm4gbm9kZS5uYW1lOwotCi0gICAgICAgICAg
ICBzd2l0Y2ggKG5vZGUubmFtZSkgewotICAgICAgICAgICAgY2FzZSAidmVjdG9yIjoKLSAgICAg
ICAgICAgICAgICBpZiAobm9kZS50eXBlQXJndW1lbnRzLmxlbmd0aCAhPSAyKQotICAgICAgICAg
ICAgICAgICAgICB0aHJvdyBuZXcgV1N5bnRheEVycm9yKG5vZGUub3JpZ2luU3RyaW5nLCBgJHtu
b2RlLm5hbWV9IHNob3VsZCBoYXZlIDIgdHlwZSBhcmd1bWVudHMsIGdvdCAke25vZGUudHlwZUFy
Z3VtZW50cy5sZW5ndGh9LmApOwotCi0gICAgICAgICAgICAgICAgY29uc3QgZWxlbWVudFR5cGVO
YW1lID0gbm9kZS50eXBlQXJndW1lbnRzWzBdLm5hbWU7Ci0gICAgICAgICAgICAgICAgY29uc3Qg
bGVuZ3RoVmFsdWUgPSBub2RlLnR5cGVBcmd1bWVudHNbMV0udmFsdWU7Ci0KLSAgICAgICAgICAg
ICAgICBpZiAoVmVjdG9yRWxlbWVudFR5cGVzLmluZGV4T2YoZWxlbWVudFR5cGVOYW1lKSA8IDAp
Ci0gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBXU3ludGF4RXJyb3Iobm9kZS5vcmlnaW5T
dHJpbmcsIGAke2VsZW1lbnRUeXBlTmFtZX0gaXMgbm90IGEgdmFsaWQgdmVjdG9yIGVsZW1lbnQg
dHlwZS5gKTsKLSAgICAgICAgICAgICAgICBpZiAoVmVjdG9yRWxlbWVudFNpemVzLmluZGV4T2Yo
bGVuZ3RoVmFsdWUpIDwgMCkKLSAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFdTeW50YXhF
cnJvcihub2RlLm9yaWdpblN0cmluZywgYCR7bGVuZ3RoVmFsdWV9IGlzIG5vdCBhIHZhbGlkIHNp
emUgZm9yIHZlY3RvcnMgd2l0aCBlbGVtZW50IHR5cGUgJHtlbGVtZW50VHlwZU5hbWV9LmApOwot
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGAke2VsZW1lbnRUeXBlTmFtZX0ke2xlbmd0aFZhbHVl
fWA7Ci0gICAgICAgICAgICAvLyBGSVhNRTogRnVydGhlciBjYXNlcyBmb3IgbWF0cmljZXMsIHRl
eHR1cmVzLCBldGMuCi0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGlmIChu
b2RlLnR5cGVBcmd1bWVudHMubGVuZ3RoKQotICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcg
V1N5bnRheEVycm9yKGAke25vZGUubmFtZX0ke2FyZ3VtZW50cy5qb2luKCIsICIpfSBpcyBub3Qg
YSBwZXJtaXR0ZWQgZ2VuZXJpYyB0eXBlIG9yIGZ1bmN0aW9uYCk7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIG5vZGUubmFtZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHZp
c2l0VHlwZVJlZihub2RlKQotICAgICAgICB7Ci0gICAgICAgICAgICBub2RlLl9uYW1lID0gUmVt
b3ZlVHlwZUFyZ3VtZW50cy5yZXNvbHZlTmFtZUFuZEFyZ3VtZW50cyhub2RlKTsKLSAgICAgICAg
ICAgIG5vZGUuX3R5cGVBcmd1bWVudHMgPSBudWxsOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
cHJvZ3JhbS52aXNpdChuZXcgUmVtb3ZlVHlwZUFyZ3VtZW50cygpKTsKLX0KZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Jlc29sdmVOYW1lcy5qcyBiL1Rvb2xzL1dl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Jlc29sdmVOYW1lcy5qcwppbmRleCAyZTQwMmM4ZDZjMGEz
NjA5ODU2MWUwMjc1ZWU1M2U3NzhmZDM4NGI4Li5iOGI1MzM0MjQ1OWFlODM5YWNmN2YwN2MyYmJh
ZWE5NmU4YTU0Y2RmIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9S
ZXNvbHZlTmFtZXMuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmVzb2x2
ZU5hbWVzLmpzCkBAIC0zMSw4ICszMSwxMyBAQCBmdW5jdGlvbiBjcmVhdGVOYW1lUmVzb2x2ZXIo
cHJvZ3JhbSkKIAogZnVuY3Rpb24gcmVzb2x2ZU5hbWVzSW5UeXBlcyhwcm9ncmFtLCBuYW1lUmVz
b2x2ZXIpCiB7Ci0gICAgZm9yIChsZXQgdHlwZSBvZiBwcm9ncmFtLnR5cGVzLnZhbHVlcygpKQot
ICAgICAgICBuYW1lUmVzb2x2ZXIuZG9TdGF0ZW1lbnQodHlwZSk7CisgICAgZm9yIChsZXQgdHlw
ZSBvZiBwcm9ncmFtLnR5cGVzLnZhbHVlcygpKSB7CisgICAgICAgIGlmICh0eXBlIGluc3RhbmNl
b2YgQXJyYXkpIHsKKyAgICAgICAgICAgIGZvciAobGV0IGNvbnN0aXR1ZW50VHlwZSBvZiB0eXBl
KQorICAgICAgICAgICAgICAgIG5hbWVSZXNvbHZlci5kb1N0YXRlbWVudChjb25zdGl0dWVudFR5
cGUpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG5hbWVSZXNvbHZlci5kb1N0YXRlbWVu
dCh0eXBlKTsKKyAgICB9CiB9CiAKIGZ1bmN0aW9uIHJlc29sdmVOYW1lc0luRnVuY3Rpb25zKHBy
b2dyYW0sIG5hbWVSZXNvbHZlcikKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL1Jlc29sdmVPdmVybG9hZEltcGwuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9SZXNvbHZlT3ZlcmxvYWRJbXBsLmpzCmluZGV4IGQwZjFlMzRkNjE3ZWEyNzI2NjQ2N2Mx
NjE3MDcxNTQ2NjRhNDQ5YWQuLjdhMDk3YmNhNDcwZWNiNTZhNmVlM2RlZjUyYWFmNWY3OGI1MDY1
MTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Jlc29sdmVPdmVy
bG9hZEltcGwuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmVzb2x2ZU92
ZXJsb2FkSW1wbC5qcwpAQCAtMTAwLDMgKzEwMCwyOCBAQCBmdW5jdGlvbiByZXNvbHZlT3Zlcmxv
YWRJbXBsKGZ1bmN0aW9ucywgYXJndW1lbnRUeXBlcywgcmV0dXJuVHlwZSwgYWxsb3dFbnRyeVBv
aQogICAgIAogICAgIHJldHVybiB7ZmFpbHVyZXM6IGFtYmlndWl0eUxpc3QubWFwKG92ZXJsb2Fk
ID0+IG5ldyBPdmVybG9hZFJlc29sdXRpb25GYWlsdXJlKG92ZXJsb2FkLmZ1bmMsIG1lc3NhZ2Up
KX07CiB9CisKK2Z1bmN0aW9uIHJlc29sdmVUeXBlT3ZlcmxvYWRJbXBsKHR5cGVzLCB0eXBlQXJn
dW1lbnRzKQoreworICAgIGlmICghdHlwZXMpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiTnVs
bCB0eXBlczsgdGhhdCBzaG91bGQgaGF2ZSBiZWVuIGNhdWdodCBieSB0aGUgY2FsbGVyLiIpOwor
CisgICAgbGV0IGZhaWx1cmVzID0gW107CisgICAgbGV0IHN1Y2Nlc3NlcyA9IFtdOworICAgIGZv
ciAobGV0IHR5cGUgb2YgdHlwZXMpIHsKKyAgICAgICAgbGV0IG92ZXJsb2FkID0gaW5mZXJUeXBl
c0ZvclR5cGVBcmd1bWVudHModHlwZSwgdHlwZUFyZ3VtZW50cyk7CisgICAgICAgIGlmIChvdmVy
bG9hZC5mYWlsdXJlKQorICAgICAgICAgICAgZmFpbHVyZXMucHVzaChvdmVybG9hZC5mYWlsdXJl
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc3VjY2Vzc2VzLnB1c2gob3ZlcmxvYWQpOwor
ICAgIH0KKyAgICAKKyAgICBpZiAoIXN1Y2Nlc3Nlcy5sZW5ndGgpCisgICAgICAgIHJldHVybiB7
ZmFpbHVyZXM6IGZhaWx1cmVzfTsKKyAgICAKKyAgICBpZiAoc3VjY2Vzc2VzLmxlbmd0aCA9PSAx
KQorICAgICAgICByZXR1cm4gc3VjY2Vzc2VzWzBdOworICAgIAorICAgIGxldCBtZXNzYWdlID0g
IkFtYmlndW91cyBvdmVybG9hZCAtIHR5cGVzIG11dHVhbGx5IGFwcGxpY2FibGUiOworICAgIHJl
dHVybiB7ZmFpbHVyZXM6IHN1Y2Nlc3Nlcy5tYXAob3ZlcmxvYWQgPT4gbmV3IFR5cGVPdmVybG9h
ZFJlc29sdXRpb25GYWlsdXJlKG92ZXJsb2FkLnR5cGUsIG1lc3NhZ2UpKX07Cit9CmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXNvbHZlVHlwZURlZnMuanMgYi9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXNvbHZlVHlwZURlZnMuanMKaW5kZXggOTE0
M2Y4ZTFlMDBhMDQ5ODE0YjkwYTM0NWM1YWY0NTE0NTlkODU3NC4uMDU3NGJlY2Q1NTMxNTA5NDc4
YTJkZWZkYzJmZTdjNjhlNjFjM2QzNSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvUmVzb2x2ZVR5cGVEZWZzLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL1Jlc29sdmVUeXBlRGVmcy5qcwpAQCAtMjcsOCArMjcsMTMgQEAKIGZ1bmN0aW9uIHJl
c29sdmVUeXBlRGVmc0luVHlwZXMocHJvZ3JhbSkKIHsKICAgICBsZXQgcmVzb2x2ZXIgPSBuZXcg
VHlwZURlZlJlc29sdmVyKCk7Ci0gICAgZm9yIChsZXQgdHlwZSBvZiBwcm9ncmFtLnR5cGVzLnZh
bHVlcygpKQotICAgICAgICB0eXBlLnZpc2l0KHJlc29sdmVyKTsKKyAgICBmb3IgKGxldCB0eXBl
IG9mIHByb2dyYW0udHlwZXMudmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKHR5cGUgaW5zdGFuY2Vv
ZiBBcnJheSkgeworICAgICAgICAgICAgZm9yIChsZXQgY29uc3RpdHVlbnRUeXBlIG9mIHR5cGUp
CisgICAgICAgICAgICAgICAgY29uc3RpdHVlbnRUeXBlLnZpc2l0KHJlc29sdmVyKTsKKyAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICB0eXBlLnZpc2l0KHJlc29sdmVyKTsKKyAgICB9CiB9CiAK
IGZ1bmN0aW9uIHJlc29sdmVUeXBlRGVmc0luRnVuY3Rpb25zKHByb2dyYW0pCmRpZmYgLS1naXQg
YS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXdyaXRlci5qcyBiL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL1Jld3JpdGVyLmpzCmluZGV4IGQ1NDdkMjAzZjBkYmY4Y2FiZWU0
Mzc3ODAzYmQ1YjA4NGU5ODA3YmMuLjI5MDFkZDU2ZGUyY2Y3ZDFkYTc4Mjc2MGUxYWMyMTMyMGU0
N2U2NWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Jld3JpdGVy
LmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Jld3JpdGVyLmpzCkBAIC05
Nyw3ICs5Nyw3IEBAIGNsYXNzIFJld3JpdGVyIHsKICAgICAKICAgICB2aXNpdFR5cGVSZWYobm9k
ZSkKICAgICB7Ci0gICAgICAgIGxldCByZXN1bHQgPSBuZXcgVHlwZVJlZihub2RlLm9yaWdpbiwg
bm9kZS5uYW1lKTsKKyAgICAgICAgbGV0IHJlc3VsdCA9IG5ldyBUeXBlUmVmKG5vZGUub3JpZ2lu
LCBub2RlLm5hbWUsIG5vZGUudHlwZUFyZ3VtZW50cy5tYXAoYXJndW1lbnQgPT4gYXJndW1lbnQu
dmlzaXQodGhpcykpKTsKICAgICAgICAgaWYgKG5vZGUudHlwZSkKICAgICAgICAgICAgIHJlc3Vs
dC50eXBlID0gTm9kZS52aXNpdChub2RlLnR5cGUsIHRoaXMpOwogICAgICAgICByZXR1cm4gcmVz
dWx0OwpAQCAtMzgyLDcgKzM4Miw3IEBAIGNsYXNzIFJld3JpdGVyIHsKIAogICAgIHZpc2l0VmVj
dG9yVHlwZShub2RlKQogICAgIHsKLSAgICAgICAgY29uc3QgdmVjVHlwZSA9IG5ldyBWZWN0b3JU
eXBlKG5vZGUub3JpZ2luLCBub2RlLm5hbWUpOworICAgICAgICBjb25zdCB2ZWNUeXBlID0gbmV3
IFZlY3RvclR5cGUobm9kZS5vcmlnaW4sIG5vZGUubmFtZSwgbm9kZS50eXBlQXJndW1lbnRzLm1h
cChhcmd1bWVudCA9PiBhcmd1bWVudC52aXNpdCh0aGlzKSkpOwogICAgICAgICB2ZWNUeXBlLl9l
bGVtZW50VHlwZSA9IG5vZGUuZWxlbWVudFR5cGUudmlzaXQodGhpcyk7CiAgICAgICAgIHJldHVy
biB2ZWNUeXBlOwogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL1NQSVJWLmh0bWwgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TUElSVi5odG1s
CmluZGV4IGM3YjM5NDBmMmIxMWJkODk2MTRmMTRhOWI1MmM0N2E1NjE2NmFiMTQuLjIwYmU3Yzg0
YzlhZjk3MGYxM2QxNTRlMmU0NGNkMzQ5ZGIzYzc0ODEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL1NQSVJWLmh0bWwKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvU1BJUlYuaHRtbApAQCAtNDMsNiArNDMsNyBAQCB0ZCB7CiAgICAgPHNjcmlwdCBz
cmM9IkNoZWNrUmVjdXJzaW9uLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ2hlY2tS
ZWN1cnNpdmVUeXBlcy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNoZWNrUmV0dXJu
cy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IkNoZWNrVHlwZXNXaXRoQXJndW1lbnRz
LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ2hlY2tVbnJlYWNoYWJsZUNvZGUuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDaGVja1dyYXBwZWQuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgc3JjPSJDaGVja2VyLmpzIj48L3NjcmlwdD4KQEAgLTExNiw3ICsxMTcsNiBA
QCB0ZCB7CiAgICAgPHNjcmlwdCBzcmM9IlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJSZWN1cnNpb25DaGVja2VyLmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0iUmVjdXJzaXZlVHlwZUNoZWNrZXIuanMiPjwvc2NyaXB0PgotICAg
IDxzY3JpcHQgc3JjPSJSZW1vdmVUeXBlQXJndW1lbnRzLmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0iUmVzb2x2ZU5hbWVzLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iUmVz
b2x2ZU92ZXJsb2FkSW1wbC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlJlc29sdmVQ
cm9wZXJ0aWVzLmpzIj48L3NjcmlwdD4KQEAgLTE0MCw2ICsxNDAsNyBAQCB0ZCB7CiAgICAgPHNj
cmlwdCBzcmM9IlR5cGVEZWYuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJUeXBlRGVm
UmVzb2x2ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJUeXBlUmVmLmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVHlwZU92ZXJsb2FkUmVzb2x1dGlvbkZhaWx1cmUuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJUeXBlZFZhbHVlLmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHNyYz0iVWludExpdGVyYWwuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3Jj
PSJVaW50TGl0ZXJhbFR5cGUuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvU3RhbmRhcmRMaWJyYXJ5LmpzIGIvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvU3RhbmRhcmRMaWJyYXJ5LmpzCmluZGV4IDA2YjI1MWNmMGEyNDgxOWNhYjUw
NjVlZjU0NDVlMTQ4OWQ1ZWFhZmMuLjgxOTBhNDM1NjkyM2E2MWU1NDg1YmRkNGYxODBkMTM4Mzc3
NDg5OGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0YW5kYXJk
TGlicmFyeS5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TdGFuZGFyZExp
YnJhcnkuanMKQEAgLTMzLDE3ICszMyw3MCBAQCBsZXQgc3RhbmRhcmRMaWJyYXJ5ID0gYAogbmF0
aXZlIHR5cGVkZWYgdm9pZDsKIG5hdGl2ZSB0eXBlZGVmIGJvb2w7CiBuYXRpdmUgdHlwZWRlZiB1
Y2hhcjsKK25hdGl2ZSB0eXBlZGVmIHVzaG9ydDsKIG5hdGl2ZSB0eXBlZGVmIHVpbnQ7CituYXRp
dmUgdHlwZWRlZiBjaGFyOworbmF0aXZlIHR5cGVkZWYgc2hvcnQ7CiBuYXRpdmUgdHlwZWRlZiBp
bnQ7CituYXRpdmUgdHlwZWRlZiBoYWxmOwogbmF0aXZlIHR5cGVkZWYgZmxvYXQ7Ci0KLS8vIEZJ
WE1FOiBBZGQgc3VwcG9ydCBmb3IgdGhlc2UgdHlwZXMgdG8gSW50cmluc2ljcy5qcwotLy8gbmF0
aXZlIHR5cGVkZWYgdXNob3J0OwotLy8gbmF0aXZlIHR5cGVkZWYgY2hhcjsKLS8vIG5hdGl2ZSB0
eXBlZGVmIHNob3J0OwotLy8gbmF0aXZlIHR5cGVkZWYgaGFsZjsKLS8vIG5hdGl2ZSB0eXBlZGVm
IGF0b21pY19pbnQ7Ci0vLyBuYXRpdmUgdHlwZWRlZiBhdG9taWNfdWludDsKK25hdGl2ZSB0eXBl
ZGVmIGF0b21pY19pbnQ7CituYXRpdmUgdHlwZWRlZiBhdG9taWNfdWludDsKKworbmF0aXZlIHR5
cGVkZWYgdmVjdG9yPGJvb2wsIDI+OwordHlwZWRlZiBib29sMiA9IHZlY3Rvcjxib29sLCAyPjsK
K25hdGl2ZSB0eXBlZGVmIHZlY3Rvcjxib29sLCAzPjsKK3R5cGVkZWYgYm9vbDMgPSB2ZWN0b3I8
Ym9vbCwgMz47CituYXRpdmUgdHlwZWRlZiB2ZWN0b3I8Ym9vbCwgND47Cit0eXBlZGVmIGJvb2w0
ID0gdmVjdG9yPGJvb2wsIDQ+OworbmF0aXZlIHR5cGVkZWYgdmVjdG9yPHVjaGFyLCAyPjsKK3R5
cGVkZWYgdWNoYXIyID0gdmVjdG9yPHVjaGFyLCAyPjsKK25hdGl2ZSB0eXBlZGVmIHZlY3Rvcjx1
Y2hhciwgMz47Cit0eXBlZGVmIHVjaGFyMyA9IHZlY3Rvcjx1Y2hhciwgMz47CituYXRpdmUgdHlw
ZWRlZiB2ZWN0b3I8dWNoYXIsIDQ+OwordHlwZWRlZiB1Y2hhcjQgPSB2ZWN0b3I8dWNoYXIsIDQ+
OworbmF0aXZlIHR5cGVkZWYgdmVjdG9yPHVzaG9ydCwgMj47Cit0eXBlZGVmIHVzaG9ydDIgPSB2
ZWN0b3I8dXNob3J0LCAyPjsKK25hdGl2ZSB0eXBlZGVmIHZlY3Rvcjx1c2hvcnQsIDM+OwordHlw
ZWRlZiB1c2hvcnQzID0gdmVjdG9yPHVzaG9ydCwgMz47CituYXRpdmUgdHlwZWRlZiB2ZWN0b3I8
dXNob3J0LCA0PjsKK3R5cGVkZWYgdXNob3J0NCA9IHZlY3Rvcjx1c2hvcnQsIDQ+OworbmF0aXZl
IHR5cGVkZWYgdmVjdG9yPHVpbnQsIDI+OwordHlwZWRlZiB1aW50MiA9IHZlY3Rvcjx1aW50LCAy
PjsKK25hdGl2ZSB0eXBlZGVmIHZlY3Rvcjx1aW50LCAzPjsKK3R5cGVkZWYgdWludDMgPSB2ZWN0
b3I8dWludCwgMz47CituYXRpdmUgdHlwZWRlZiB2ZWN0b3I8dWludCwgND47Cit0eXBlZGVmIHVp
bnQ0ID0gdmVjdG9yPHVpbnQsIDQ+OworbmF0aXZlIHR5cGVkZWYgdmVjdG9yPGNoYXIsIDI+Owor
dHlwZWRlZiBjaGFyMiA9IHZlY3RvcjxjaGFyLCAyPjsKK25hdGl2ZSB0eXBlZGVmIHZlY3Rvcjxj
aGFyLCAzPjsKK3R5cGVkZWYgY2hhcjMgPSB2ZWN0b3I8Y2hhciwgMz47CituYXRpdmUgdHlwZWRl
ZiB2ZWN0b3I8Y2hhciwgND47Cit0eXBlZGVmIGNoYXI0ID0gdmVjdG9yPGNoYXIsIDQ+OworbmF0
aXZlIHR5cGVkZWYgdmVjdG9yPHNob3J0LCAyPjsKK3R5cGVkZWYgc2hvcnQyID0gdmVjdG9yPHNo
b3J0LCAyPjsKK25hdGl2ZSB0eXBlZGVmIHZlY3RvcjxzaG9ydCwgMz47Cit0eXBlZGVmIHNob3J0
MyA9IHZlY3RvcjxzaG9ydCwgMz47CituYXRpdmUgdHlwZWRlZiB2ZWN0b3I8c2hvcnQsIDQ+Owor
dHlwZWRlZiBzaG9ydDQgPSB2ZWN0b3I8c2hvcnQsIDQ+OworbmF0aXZlIHR5cGVkZWYgdmVjdG9y
PGludCwgMj47Cit0eXBlZGVmIGludDIgPSB2ZWN0b3I8aW50LCAyPjsKK25hdGl2ZSB0eXBlZGVm
IHZlY3RvcjxpbnQsIDM+OwordHlwZWRlZiBpbnQzID0gdmVjdG9yPGludCwgMz47CituYXRpdmUg
dHlwZWRlZiB2ZWN0b3I8aW50LCA0PjsKK3R5cGVkZWYgaW50NCA9IHZlY3RvcjxpbnQsIDQ+Owor
bmF0aXZlIHR5cGVkZWYgdmVjdG9yPGhhbGYsIDI+OwordHlwZWRlZiBoYWxmMiA9IHZlY3Rvcjxo
YWxmLCAyPjsKK25hdGl2ZSB0eXBlZGVmIHZlY3RvcjxoYWxmLCAzPjsKK3R5cGVkZWYgaGFsZjMg
PSB2ZWN0b3I8aGFsZiwgMz47CituYXRpdmUgdHlwZWRlZiB2ZWN0b3I8aGFsZiwgND47Cit0eXBl
ZGVmIGhhbGY0ID0gdmVjdG9yPGhhbGYsIDQ+OworbmF0aXZlIHR5cGVkZWYgdmVjdG9yPGZsb2F0
LCAyPjsKK3R5cGVkZWYgZmxvYXQyID0gdmVjdG9yPGZsb2F0LCAyPjsKK25hdGl2ZSB0eXBlZGVm
IHZlY3RvcjxmbG9hdCwgMz47Cit0eXBlZGVmIGZsb2F0MyA9IHZlY3RvcjxmbG9hdCwgMz47Citu
YXRpdmUgdHlwZWRlZiB2ZWN0b3I8ZmxvYXQsIDQ+OwordHlwZWRlZiBmbG9hdDQgPSB2ZWN0b3I8
ZmxvYXQsIDQ+OwogCiBuYXRpdmUgb3BlcmF0b3IgaW50KHVpbnQpOwogbmF0aXZlIG9wZXJhdG9y
IGludCh1Y2hhcik7CkBAIC0xNDcsMjggKzIwMCwxMiBAQCBib29sIG9wZXJhdG9yfihib29sIHZh
bHVlKQogewogICAgIHJldHVybiAhdmFsdWU7CiB9Ci0KLW5hdGl2ZSB0eXBlZGVmIHVjaGFyMjsK
LW5hdGl2ZSB0eXBlZGVmIHVjaGFyMzsKLW5hdGl2ZSB0eXBlZGVmIHVjaGFyNDsKLQotbmF0aXZl
IHR5cGVkZWYgdWludDI7Ci1uYXRpdmUgdHlwZWRlZiB1aW50MzsKLW5hdGl2ZSB0eXBlZGVmIHVp
bnQ0OwotCi1uYXRpdmUgdHlwZWRlZiBpbnQyOwotbmF0aXZlIHR5cGVkZWYgaW50MzsKLW5hdGl2
ZSB0eXBlZGVmIGludDQ7Ci0KLW5hdGl2ZSB0eXBlZGVmIGZsb2F0MjsKLW5hdGl2ZSB0eXBlZGVm
IGZsb2F0MzsKLW5hdGl2ZSB0eXBlZGVmIGZsb2F0NDsKIGA7CiAKIC8vIEZJWE1FOiBPbmNlIHRo
ZSBzdGFuZGFyZCBsaWJyYXJ5IGhhcyBiZWVuIHJlcGxhY2VkIHdpdGggYSBuZXcgdmVyc2lvbiwg
dGhpcyBjb21tZW50cyBzaG91bGQgYmUgcmVtb3ZlZC4KIC8vIFRoaXMgbGlzdCBpcyB1c2VkIHRv
IHJlc3RyaWN0IHRoZSBhdmFpbGFiaWxpdHkgb2YgdmVjdG9yIHR5cGVzIGF2YWlsYWJsZSBpbiB0
aGUgbGFuZ2F1Z2UuCiAvLyBQZXJtaXNzaWJsZSB2ZWN0b3IgZWxlbWVudCB0eXBlcyBtdXN0IGFw
cGVhciBpbiB0aGlzIGxpc3QgYW5kIGluIHRoZSBzdGFuZGFyZCBsaWJyYXJ5Ci1jb25zdCBWZWN0
b3JFbGVtZW50VHlwZXMgPSBbIC8qImJvb2wiLCovICJ1Y2hhciIsIC8qImNoYXIiLCAidXNob3J0
IiwgInNob3J0IiwqLyAidWludCIsICJpbnQiLCAvKiAiaGFsZiIsICovImZsb2F0IiBdOworY29u
c3QgVmVjdG9yRWxlbWVudFR5cGVzID0gWyAiYm9vbCIsICJ1Y2hhciIsICJjaGFyIiwgInVzaG9y
dCIsICJzaG9ydCIsICJ1aW50IiwgImludCIsICJoYWxmIiwgImZsb2F0IiBdOwogY29uc3QgVmVj
dG9yRWxlbWVudFNpemVzID0gWyAyLCAzLCA0IF07CiAKIGZ1bmN0aW9uIGFsbFZlY3RvclR5cGVO
YW1lcygpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TdGF0ZW1l
bnRDbG9uZXIuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TdGF0ZW1lbnRDbG9u
ZXIuanMKaW5kZXggYjM5NDhjNDUwYzcxNjA5Nzc5NzVlZDRlOGU5OGVkOTljNGY3YTA1OS4uMGQw
NzE1YTk4NTRkZWYxYmZkMmE4MDhjNzQwNDExMmJhMWE0YTBjMSAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhdGVtZW50Q2xvbmVyLmpzCisrKyBiL1Rvb2xzL1dl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0YXRlbWVudENsb25lci5qcwpAQCAtNTAsNyArNTAsNyBA
QCBjbGFzcyBTdGF0ZW1lbnRDbG9uZXIgZXh0ZW5kcyBSZXdyaXRlciB7CiAgICAgCiAgICAgdmlz
aXROYXRpdmVUeXBlKG5vZGUpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZVR5cGUo
bm9kZS5vcmlnaW4sIG5vZGUubmFtZSk7CisgICAgICAgIHJldHVybiBuZXcgTmF0aXZlVHlwZShu
b2RlLm9yaWdpbiwgbm9kZS5uYW1lLCBub2RlLnR5cGVBcmd1bWVudHMubWFwKGFyZ3VtZW50ID0+
IGFyZ3VtZW50LnZpc2l0KHRoaXMpKSk7CiAgICAgfQogICAgIAogICAgIHZpc2l0VHlwZURlZihu
b2RlKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6
ZURlZmF1bHRDb25zdHJ1Y3Rvck9wZXJhdG9yLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvU3ludGhlc2l6ZURlZmF1bHRDb25zdHJ1Y3Rvck9wZXJhdG9yLmpzCmluZGV4IGZlZmU5
YzAzZDdiMTBiMzExNmIzYjY3ZjJhZjA1N2YxNmZjMTUxNmMuLjNhM2Y3NjczODY3YjlhYWIwMTMy
MjE4MDM1Njg3MzhjMTYzYTU2N2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL1N5bnRoZXNpemVEZWZhdWx0Q29uc3RydWN0b3JPcGVyYXRvci5qcworKysgYi9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TeW50aGVzaXplRGVmYXVsdENvbnN0cnVjdG9yT3Bl
cmF0b3IuanMKQEAgLTQ1LDYgKzQ1LDEyIEBAIGZ1bmN0aW9uIHN5bnRoZXNpemVEZWZhdWx0Q29u
c3RydWN0b3JPcGVyYXRvcihwcm9ncmFtKQogICAgICAgICAgICAgdHlwZXMuYWRkKG5vZGUpOwog
ICAgICAgICAgICAgc3VwZXIudmlzaXRFbGVtZW50YWxUeXBlKG5vZGUpOwogICAgICAgICB9CisK
KyAgICAgICAgdmlzaXRWZWN0b3JUeXBlKG5vZGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHR5
cGVzLmFkZChub2RlKTsKKyAgICAgICAgICAgIHN1cGVyLnZpc2l0VmVjdG9yVHlwZShub2RlKTsK
KyAgICAgICAgfQogICAgIH0KIAogICAgIHByb2dyYW0udmlzaXQobmV3IEZpbmRBbGxUeXBlcygp
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N5bnRoZXNpemVT
dHJ1Y3RBY2Nlc3NvcnMuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TeW50aGVz
aXplU3RydWN0QWNjZXNzb3JzLmpzCmluZGV4IGJmZTYwNDQ5NGRjNzI1YWU3ZTc0YWQ0YTBiZmUy
M2U5M2MwOTE3NzYuLmEwMTgxNDY4YTI1ZWQ0YzA5MDUwZDdiZjFkNjFmNDRlZDNhMGFhNjYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N5bnRoZXNpemVTdHJ1Y3RB
Y2Nlc3NvcnMuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3ludGhlc2l6
ZVN0cnVjdEFjY2Vzc29ycy5qcwpAQCAtNTEsNyArNTEsNyBAQCBmdW5jdGlvbiBzeW50aGVzaXpl
U3RydWN0QWNjZXNzb3JzKHByb2dyYW0pCiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZ1bmN0
aW9uIGNyZWF0ZVR5cGVSZWYoKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVy
biBUeXBlUmVmLmluc3RhbnRpYXRlKHR5cGUpOworICAgICAgICAgICAgICAgIHJldHVybiBUeXBl
UmVmLndyYXAodHlwZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IGxldCBpc0Nhc3QgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL1Rlc3QuaHRtbCBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuaHRt
bAppbmRleCAxM2YzNTgyMzk5MjlkOGEzZTZhY2U1MjU0NWI5MWNhNTJkNjA2MGU0Li4wZGU2OTQx
ZDU5MDJmMGRjY2Y0ODhjOTQ1MTU1YzFmYTNhYjViYjljIDEwMDY0NAotLS0gYS9Ub29scy9XZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0bWwKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvVGVzdC5odG1sCkBAIC0zNyw2ICszNyw3IEBACiA8c2NyaXB0IHNyYz0iQ2hlY2tS
ZWN1cnNpb24uanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkNoZWNrUmVjdXJzaXZlVHlwZXMu
anMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkNoZWNrUmV0dXJucy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iQ2hlY2tUeXBlc1dpdGhBcmd1bWVudHMuanMiPjwvc2NyaXB0PgogPHNjcmlw
dCBzcmM9IkNoZWNrVW5yZWFjaGFibGVDb2RlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJD
aGVja1dyYXBwZWQuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkNoZWNrZXIuanMiPjwvc2Ny
aXB0PgpAQCAtMTEwLDcgKzExMSw2IEBACiA8c2NyaXB0IHNyYz0iUmVhZE1vZGlmeVdyaXRlRXhw
cmVzc2lvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iUmVjdXJzaW9uQ2hlY2tlci5qcyI+
PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iUmVjdXJzaXZlVHlwZUNoZWNrZXIuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9IlJlbW92ZVR5cGVBcmd1bWVudHMuanMiPjwvc2NyaXB0PgogPHNjcmlw
dCBzcmM9IlJlc29sdmVOYW1lcy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iUmVzb2x2ZU92
ZXJsb2FkSW1wbC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iUmVzb2x2ZVByb3BlcnRpZXMu
anMiPjwvc2NyaXB0PgpAQCAtMTM0LDYgKzEzNCw3IEBACiA8c2NyaXB0IHNyYz0iVHlwZURlZi5q
cyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iVHlwZURlZlJlc29sdmVyLmpzIj48L3NjcmlwdD4K
IDxzY3JpcHQgc3JjPSJUeXBlUmVmLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJUeXBlT3Zl
cmxvYWRSZXNvbHV0aW9uRmFpbHVyZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iVHlwZWRW
YWx1ZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iVWludExpdGVyYWwuanMiPjwvc2NyaXB0
PgogPHNjcmlwdCBzcmM9IlVpbnRMaXRlcmFsVHlwZS5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQg
YS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0LmpzIGIvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvVGVzdC5qcwppbmRleCBkZjQxN2RhYmY2ZDg3MTM1ZTczNWNhOGM5YjFi
ZjEzYWI2NDA3NWExLi5iZmZiY2YwYjJjYjZkY2IyNTdmMWZjMzk5MmU4ZWM2NTM0NDU2ZDljIDEw
MDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0LmpzCisrKyBiL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuanMKQEAgLTI4ODEsNyArMjg4MSw3IEBA
IHRlc3RzLnNoYWRlclR5cGVzID0gZnVuY3Rpb24oKQogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgZnJhZ21lbnQgQm9vIGJhcihGb28gc3RhZ2VJbikKICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gYm9vKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEJvbygpOwogICAg
ICAgICAgICAgfQogICAgICAgICBgKSwKICAgICAgICAgKGUpID0+IGUgaW5zdGFuY2VvZiBXVHlw
ZUVycm9yKTsKQEAgLTI5MDQsNyArMjkwNCw3IEBAIHRlc3RzLnNoYWRlclR5cGVzID0gZnVuY3Rp
b24oKQogCiB0ZXN0cy52ZWN0b3JUeXBlU3ludGF4ID0gZnVuY3Rpb24oKQogewotICAgIGNvbnN0
IHByb2dyYW0gPSBkb1ByZXAoYAorICAgIGxldCBwcm9ncmFtID0gZG9QcmVwKGAKICAgICAgICAg
aW50IGZvbzIoKQogICAgICAgICB7CiAgICAgICAgICAgICBpbnQyIHg7CkBAIC0yOTM5LDcgKzI5
MzksMjYgQEAgdGVzdHMudmVjdG9yVHlwZVN5bnRheCA9IGZ1bmN0aW9uKCkKICAgICBjaGVja0lu
dChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbzIiLCBbXSksIDQpOwogICAgIGNo
ZWNrSW50KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vMyIsIFtdKSwgNSk7CiAg
ICAgY2hlY2tJbnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb280IiwgW10pLCA2
KTsKKyAgICBjaGVja0Jvb2wocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJ2ZWMyT3Bl
cmF0b3JDYXN0IiwgW10pLCB0cnVlKTsKKworICAgIHByb2dyYW0gPSBkb1ByZXAoYAorICAgICAg
ICB0eXBlZGVmIGkgPSBpbnQ7CisgICAgICAgIGludCBmb28yKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgaW50MiB4OworICAgICAgICAgICAgdmVjdG9yPGksIDI+IHogPSBpbnQyKDMsIDQpOwor
ICAgICAgICAgICAgeCA9IHo7CisgICAgICAgICAgICByZXR1cm4geC55OworICAgICAgICB9CisK
KyAgICAgICAgYm9vbCB2ZWMyT3BlcmF0b3JDYXN0KCkKKyAgICAgICAgeworICAgICAgICAgICAg
aW50MiB4ID0gdmVjdG9yPGksMj4oMSwgMik7CisgICAgICAgICAgICB2ZWN0b3I8aSwgMj4geSA9
IGludDIoMSwgMik7CisgICAgICAgICAgICByZXR1cm4geCA9PSB5ICYmIHgueCA9PSAxICYmIHgu
eSA9PSAyICYmIHkueCA9PSAxICYmIHkueSA9PSAyOworICAgICAgICB9YCk7CiAKKyAgICBjaGVj
a0ludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbzIiLCBbXSksIDQpOwogICAg
IGNoZWNrQm9vbChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgInZlYzJPcGVyYXRvckNh
c3QiLCBbXSksIHRydWUpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9UeXBlT3ZlcmxvYWRSZXNvbHV0aW9uRmFpbHVyZS5qcyBiL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL1R5cGVPdmVybG9hZFJlc29sdXRpb25GYWlsdXJlLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmQ1Y2IzZjcxMGZhMGNlMDNkMjkwMmZhMzJlZDhiMDI3NWZiNjI2MDgKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UeXBlT3ZlcmxvYWRSZXNvbHV0
aW9uRmFpbHVyZS5qcwpAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisidXNlIHN0cmljdCI7CisKK2NsYXNzIFR5cGVPdmVybG9hZFJl
c29sdXRpb25GYWlsdXJlIHsKKyAgICBjb25zdHJ1Y3Rvcih0eXBlLCByZWFzb24pCisgICAgewor
ICAgICAgICB0aGlzLl90eXBlID0gdHlwZTsKKyAgICAgICAgdGhpcy5fcmVhc29uID0gcmVhc29u
OworICAgIH0KKyAgICAKKyAgICBnZXQgdHlwZSgpIHsgcmV0dXJuIHRoaXMuX3R5cGU7IH0KKyAg
ICBnZXQgcmVhc29uKCkgeyByZXR1cm4gdGhpcy5fcmVhc29uOyB9CisgICAgCisgICAgdG9TdHJp
bmcoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMudHlwZS50b1N0cmluZygpICsgIiBkaWQg
bm90IG1hdGNoIGJlY2F1c2U6ICIgKyB0aGlzLnJlYXNvbjsKKyAgICB9Cit9CisKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1R5cGVSZWYuanMgYi9Ub29scy9XZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9UeXBlUmVmLmpzCmluZGV4IGI1ZjNjMGIzZDkyNTMyZTA1YzY4
MDA1NGExNjFmMDVlMGRkZDY0NmIuLmFjZGE3MDZjMGNlMzc5N2U0NmIwOTUxN2RjYjA4MWVhNTll
M2RmODkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1R5cGVSZWYu
anMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVHlwZVJlZi5qcwpAQCAtMjUs
NyArMjUsNyBAQAogInVzZSBzdHJpY3QiOwogCiBjbGFzcyBUeXBlUmVmIGV4dGVuZHMgVHlwZSB7
Ci0gICAgY29uc3RydWN0b3Iob3JpZ2luLCBuYW1lLCB0eXBlQXJndW1lbnRzID0gbnVsbCkKKyAg
ICBjb25zdHJ1Y3RvcihvcmlnaW4sIG5hbWUsIHR5cGVBcmd1bWVudHMgPSBbXSkKICAgICB7CiAg
ICAgICAgIHN1cGVyKCk7CiAgICAgICAgIHRoaXMuX29yaWdpbiA9IG9yaWdpbjsKQEAgLTM4LDE0
ICszOCwxMSBAQCBjbGFzcyBUeXBlUmVmIGV4dGVuZHMgVHlwZSB7CiAgICAgewogICAgICAgICBp
ZiAodHlwZSBpbnN0YW5jZW9mIFR5cGVSZWYpCiAgICAgICAgICAgICByZXR1cm4gdHlwZTsKLSAg
ICAgICAgbGV0IHJlc3VsdCA9IG5ldyBUeXBlUmVmKHR5cGUub3JpZ2luLCB0eXBlLm5hbWUpOwot
ICAgICAgICByZXN1bHQudHlwZSA9IHR5cGU7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAg
fQotICAgIAotICAgIHN0YXRpYyBpbnN0YW50aWF0ZSh0eXBlKQotICAgIHsKLSAgICAgICAgbGV0
IHJlc3VsdCA9IG5ldyBUeXBlUmVmKHR5cGUub3JpZ2luLCB0eXBlLm5hbWUpOworICAgICAgICBs
ZXQgcmVzdWx0OworICAgICAgICBpZiAodHlwZSBpbnN0YW5jZW9mIE5hdGl2ZVR5cGUpCisgICAg
ICAgICAgICByZXN1bHQgPSBuZXcgVHlwZVJlZih0eXBlLm9yaWdpbiwgdHlwZS5uYW1lLCB0eXBl
LnR5cGVBcmd1bWVudHMpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXN1bHQgPSBuZXcg
VHlwZVJlZih0eXBlLm9yZ2luLCB0eXBlLm5hbWUpOwogICAgICAgICByZXN1bHQudHlwZSA9IHR5
cGU7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpAQCAtNjQsNiArNjEsMzkgQEAgY2xh
c3MgVHlwZVJlZiBleHRlbmRzIFR5cGUgewogICAgICAgICB0aGlzLl90eXBlID0gbmV3VHlwZTsK
ICAgICB9CiAKKyAgICByZXNvbHZlKHBvc3NpYmxlT3ZlcmxvYWRzKQorICAgIHsKKyAgICAgICAg
aWYgKCFwb3NzaWJsZU92ZXJsb2FkcykKKyAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9y
KHRoaXMub3JpZ2luLm9yaWdpblN0cmluZywgIkRpZCBub3QgZmluZCBhbnkgdHlwZXMgbmFtZWQg
IiArIHRoaXMubmFtZSk7CisKKyAgICAgICAgbGV0IGZhaWx1cmVzID0gW107CisgICAgICAgIGxl
dCBvdmVybG9hZCA9IHJlc29sdmVUeXBlT3ZlcmxvYWRJbXBsKHBvc3NpYmxlT3ZlcmxvYWRzLCB0
aGlzLnR5cGVBcmd1bWVudHMpOworCisgICAgICAgIGlmICghb3ZlcmxvYWQudHlwZSkgeworICAg
ICAgICAgICAgZmFpbHVyZXMucHVzaCguLi5vdmVybG9hZC5mYWlsdXJlcyk7CisgICAgICAgICAg
ICBsZXQgbWVzc2FnZSA9ICJEaWQgbm90IGZpbmQgdHlwZSBuYW1lZCAiICsgdGhpcy5uYW1lICsg
IiBmb3IgdHlwZSBhcmd1bWVudHMgIjsKKyAgICAgICAgICAgIG1lc3NhZ2UgKz0gIigiICsgdGhp
cy50eXBlQXJndW1lbnRzICsgIikiOworICAgICAgICAgICAgaWYgKGZhaWx1cmVzLmxlbmd0aCkK
KyAgICAgICAgICAgICAgICBtZXNzYWdlICs9ICIsIGJ1dCBjb25zaWRlcmVkOlxuIiArIGZhaWx1
cmVzLmpvaW4oIlxuIikKKyAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9yKHRoaXMub3Jp
Z2luLm9yaWdpblN0cmluZywgbWVzc2FnZSk7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IHRoaXMudHlwZUFyZ3VtZW50cy5sZW5ndGg7ICsraSkgeworICAgICAgICAg
ICAgbGV0IHR5cGVBcmd1bWVudCA9IHRoaXMudHlwZUFyZ3VtZW50c1tpXTsKKyAgICAgICAgICAg
IGxldCByZXNvbHZlZFR5cGVBcmd1bWVudCA9IG92ZXJsb2FkLnR5cGUudHlwZUFyZ3VtZW50c1tp
XTsKKyAgICAgICAgICAgIGxldCByZXN1bHQgPSB0eXBlQXJndW1lbnQuZXF1YWxzV2l0aENvbW1p
dChyZXNvbHZlZFR5cGVBcmd1bWVudCk7CisgICAgICAgICAgICBpZiAoIXJlc3VsdCkKKyAgICAg
ICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkF0ICIgKyB0aGlzLm9yaWdpbi5vcmlnaW5TdHJp
bmcgKyAiIGFyZ3VtZW50IHR5cGVzIGZvciBUeXBlIGFuZCBUeXBlUmVmIG5vdCBlcXVhbDogYXJn
dW1lbnQgdHlwZSA9ICIgKyB0eXBlQXJndW1lbnQgKyAiLCByZXNvbHZlZCB0eXBlIGFyZ3VtZW50
ID0gIiArIHJlc29sdmVkVHlwZUFyZ3VtZW50KTsKKyAgICAgICAgICAgIGlmIChyZXNvbHZlZFR5
cGVBcmd1bWVudC5jb25zdHJ1Y3Rvci5uYW1lID09ICJHZW5lcmljTGl0ZXJhbCIpIHsKKyAgICAg
ICAgICAgICAgICByZXN1bHQgPSB0eXBlQXJndW1lbnQudHlwZS5lcXVhbHNXaXRoQ29tbWl0KHJl
c29sdmVkVHlwZUFyZ3VtZW50LnR5cGUpOworICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KQor
ICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkF0ICIgKyB0aGlzLm9yaWdpbi5v
cmlnaW5TdHJpbmcgKyAiIGFyZ3VtZW50IHR5cGVzIGZvciBUeXBlIGFuZCBUeXBlUmVmIG5vdCBl
cXVhbDogYXJndW1lbnQgdHlwZSA9ICIgKyB0eXBlQXJndW1lbnQgKyAiLCByZXNvbHZlZCB0eXBl
IGFyZ3VtZW50ID0gIiArIHJlc29sdmVkVHlwZUFyZ3VtZW50KTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgICB0aGlzLnR5cGUgPSBvdmVybG9hZC50
eXBlOworICAgIH0KKwogICAgIGdldCB1bmlmeU5vZGUoKQogICAgIHsKICAgICAgICAgaWYgKCF0
aGlzLnR5cGUpCkBAIC05OSw3ICsxMjksMTAgQEAgY2xhc3MgVHlwZVJlZiBleHRlbmRzIFR5cGUg
ewogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLm5hbWUpCiAgICAgICAgICAgICByZXR1cm4gdGhp
cy50eXBlLnRvU3RyaW5nKCk7Ci0gICAgICAgIHJldHVybiB0aGlzLm5hbWU7CisgICAgICAgIGxl
dCByZXN1bHQgPSB0aGlzLm5hbWU7CisgICAgICAgIGlmICh0aGlzLnR5cGVBcmd1bWVudHMubGVu
Z3RoID4gMCkKKyAgICAgICAgICAgIHJlc3VsdCArPSAiPCIgKyB0aGlzLnR5cGVBcmd1bWVudHMu
bWFwKGFyZ3VtZW50ID0+IGFyZ3VtZW50LnRvU3RyaW5nKCkpLmpvaW4oIiwiKSArICI+IjsKKyAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL1VuaWZpY2F0aW9uQ29udGV4dC5qcyBiL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL1VuaWZpY2F0aW9uQ29udGV4dC5qcwppbmRleCAyZjcxNTQ3YjBhZmJl
MTgwMzc4ZjM3OTk2MjMxODYyYTJiOTFhODJlLi4zODE5MTY5NzIyM2VmNzIxYTUzNzkxNGIzNjk4
OTc2NzgxZmU2ZTZlIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9V
bmlmaWNhdGlvbkNvbnRleHQuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
VW5pZmljYXRpb25Db250ZXh0LmpzCkBAIC05Miw2ICs5MiwxOSBAQCBjbGFzcyBVbmlmaWNhdGlv
bkNvbnRleHQgewogICAgIAogICAgIHZlcmlmeSgpCiAgICAgeworICAgICAgICAvLyBXZSBkbyBh
IHR3by1waGFzZSBwcmUtdmVyaWZpY2F0aW9uLiBUaGlzIGdpdmVzIGxpdGVyYWxzIGEgY2hhbmNl
IHRvIHNlbGVjdCBhIG1vcmUgc3BlY2lmaWMgdHlwZS4KKyAgICAgICAgbGV0IHByZXBhcmF0aW9u
cyA9IFtdOworICAgICAgICBmb3IgKGxldCBub2RlIG9mIHRoaXMubm9kZXMpIHsKKyAgICAgICAg
ICAgIGxldCBwcmVwYXJhdGlvbiA9IG5vZGUucHJlcGFyZVRvVmVyaWZ5KHRoaXMpOworICAgICAg
ICAgICAgaWYgKHByZXBhcmF0aW9uKQorICAgICAgICAgICAgICAgIHByZXBhcmF0aW9ucy5wdXNo
KHByZXBhcmF0aW9uKTsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGxldCBwcmVwYXJhdGlvbiBv
ZiBwcmVwYXJhdGlvbnMpIHsKKyAgICAgICAgICAgIGxldCByZXN1bHQgPSBwcmVwYXJhdGlvbigp
OworICAgICAgICAgICAgaWYgKCFyZXN1bHQucmVzdWx0KQorICAgICAgICAgICAgICAgIHJldHVy
biByZXN1bHQ7CisgICAgICAgIH0KKwogICAgICAgICBmb3IgKGxldCB0eXBlQXJndW1lbnQgb2Yg
dGhpcy50eXBlQXJndW1lbnRzKCkpIHsKICAgICAgICAgICAgIGxldCByZXN1bHQgPSB0eXBlQXJn
dW1lbnQudmVyaWZ5QXNBcmd1bWVudCh0aGlzKTsKICAgICAgICAgICAgIGlmICghcmVzdWx0LnJl
c3VsdCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1ZlY3RvclR5
cGUuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9WZWN0b3JUeXBlLmpzCmluZGV4
IDUwMTRjNjcxYTA3ODgyMDAyYzIzNGJiMzJmMTdjODg2MGVmZmMxYzYuLmRmMGNiYzJjNzMwOGY0
NTQxM2NiY2MyOGQ4OTYyMWJjMDNhYjI2MDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL1ZlY3RvclR5cGUuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvVmVjdG9yVHlwZS5qcwpAQCAtMjUsMTkgKzI1LDE0IEBACiAidXNlIHN0cmljdCI7CiAK
IGNsYXNzIFZlY3RvclR5cGUgZXh0ZW5kcyBOYXRpdmVUeXBlIHsKLSAgICBjb25zdHJ1Y3Rvcihv
cmlnaW4sIG5hbWUpCisgICAgY29uc3RydWN0b3Iob3JpZ2luLCBuYW1lLCB0eXBlQXJndW1lbnRz
KQogICAgIHsKLSAgICAgICAgc3VwZXIob3JpZ2luLCBuYW1lKTsKLSAgICAgICAgY29uc3QgbWF0
Y2ggPSAvXihbQS16XSspKFswLTldKSQvLmV4ZWMobmFtZSk7Ci0gICAgICAgIGlmICghbWF0Y2gp
Ci0gICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihvcmlnaW4ub3JpZ2luU3RyaW5nLCBg
JHtuYW1lfSBkb2Vzbid0IG1hdGNoIHRoZSBmb3JtYXQgZm9yIHZlY3RvciB0eXBlIG5hbWVzLidg
KTsKLQotICAgICAgICB0aGlzLl9lbGVtZW50VHlwZSA9IG5ldyBUeXBlUmVmKG9yaWdpbiwgbWF0
Y2hbMV0pOwotICAgICAgICB0aGlzLl9udW1FbGVtZW50c1ZhbHVlID0gcGFyc2VJbnQobWF0Y2hb
Ml0pOworICAgICAgICBzdXBlcihvcmlnaW4sIG5hbWUsIHR5cGVBcmd1bWVudHMpOwogICAgIH0K
IAotICAgIGdldCBlbGVtZW50VHlwZSgpIHsgcmV0dXJuIHRoaXMuX2VsZW1lbnRUeXBlOyB9Ci0g
ICAgZ2V0IG51bUVsZW1lbnRzVmFsdWUoKSB7IHJldHVybiB0aGlzLl9udW1FbGVtZW50c1ZhbHVl
OyB9CisgICAgZ2V0IGVsZW1lbnRUeXBlKCkgeyByZXR1cm4gdGhpcy50eXBlQXJndW1lbnRzWzBd
OyB9CisgICAgZ2V0IG51bUVsZW1lbnRzKCkgeyByZXR1cm4gdGhpcy50eXBlQXJndW1lbnRzWzFd
OyB9CisgICAgZ2V0IG51bUVsZW1lbnRzVmFsdWUoKSB7IHJldHVybiB0aGlzLm51bUVsZW1lbnRz
LnZhbHVlOyB9CiAgICAgZ2V0IHNpemUoKSB7IHJldHVybiB0aGlzLmVsZW1lbnRUeXBlLnNpemUg
KiB0aGlzLm51bUVsZW1lbnRzVmFsdWU7IH0KIAogICAgIHVuaWZ5SW1wbCh1bmlmaWNhdGlvbkNv
bnRleHQsIG90aGVyKQpAQCAtNTksNyArNTQsNyBAQCBjbGFzcyBWZWN0b3JUeXBlIGV4dGVuZHMg
TmF0aXZlVHlwZSB7CiAKICAgICB0b1N0cmluZygpCiAgICAgewotICAgICAgICByZXR1cm4gYG5h
dGl2ZSB0eXBlZGVmICR7dGhpcy5lbGVtZW50VHlwZX0ke3RoaXMubnVtRWxlbWVudHNWYWx1ZX1g
OworICAgICAgICByZXR1cm4gYG5hdGl2ZSB0eXBlZGVmIHZlY3Rvcjwke3RoaXMuZWxlbWVudFR5
cGV9LCAke3RoaXMubnVtRWxlbWVudHNWYWx1ZX0+YDsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Zpc2l0b3IuanMgYi9Ub29scy9XZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9WaXNpdG9yLmpzCmluZGV4IDdkMzg3YjI1ZjI1ODliODczOTE4YWYy
ZjQ0YzI0MzRhZDY1ODc0N2YuLjYwZGZjZWJmMWFlMWQ1OThkMzI5ODBkNTZkNzg0ZjE0NTM4ZDU1
M2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Zpc2l0b3IuanMK
KysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVmlzaXRvci5qcwpAQCAtNjgsMTAg
KzY4LDE0IEBAIGNsYXNzIFZpc2l0b3IgewogICAgIAogICAgIHZpc2l0VHlwZVJlZihub2RlKQog
ICAgIHsKKyAgICAgICAgZm9yIChsZXQgdHlwZUFyZ3VtZW50IG9mIG5vZGUudHlwZUFyZ3VtZW50
cykKKyAgICAgICAgICAgIHR5cGVBcmd1bWVudC52aXNpdCh0aGlzKTsKICAgICB9CiAgICAgCiAg
ICAgdmlzaXROYXRpdmVUeXBlKG5vZGUpCiAgICAgeworICAgICAgICBmb3IgKGxldCB0eXBlQXJn
dW1lbnQgb2Ygbm9kZS50eXBlQXJndW1lbnRzKQorICAgICAgICAgICAgdHlwZUFyZ3VtZW50LnZp
c2l0KHRoaXMpOwogICAgIH0KICAgICAKICAgICB2aXNpdFR5cGVEZWYobm9kZSkKQEAgLTMyNyw2
ICszMzEsNyBAQCBjbGFzcyBWaXNpdG9yIHsKICAgICB2aXNpdFZlY3RvclR5cGUobm9kZSkKICAg
ICB7CiAgICAgICAgIG5vZGUuZWxlbWVudFR5cGUudmlzaXQodGhpcyk7CisgICAgICAgIG5vZGUu
bnVtRWxlbWVudHMudmlzaXQodGhpcyk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9pbmRleC5odG1sIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvaW5kZXguaHRtbAppbmRleCA0YzkzYTMzZTZhMzg2NjJlOGJhMWU4NDI0MDNkNGMw
MmQ1ZTlmOWRmLi45YzMxY2U5ZjRhODQ3NjQ5NDU2ZTU0NzUwN2IwYjMyZTA1NmFjYjFiIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9pbmRleC5odG1sCisrKyBiL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL2luZGV4Lmh0bWwKQEAgLTM4LDYgKzM4LDcgQEAK
IDxzY3JpcHQgc3JjPSJDaGVja1JlY3Vyc2l2ZVR5cGVzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQg
c3JjPSJDaGVja1JldHVybnMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkNoZWNrVW5yZWFj
aGFibGVDb2RlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJDaGVja1R5cGVzV2l0aEFyZ3Vt
ZW50cy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iQ2hlY2tXcmFwcGVkLmpzIj48L3Njcmlw
dD4KIDxzY3JpcHQgc3JjPSJDaGVja2VyLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJDbG9u
ZVByb2dyYW0uanMiPjwvc2NyaXB0PgpAQCAtMTEwLDcgKzExMSw2IEBACiA8c2NyaXB0IHNyYz0i
UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iUmVj
dXJzaW9uQ2hlY2tlci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iUmVjdXJzaXZlVHlwZUNo
ZWNrZXIuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9IlJlbW92ZVR5cGVBcmd1bWVudHMuanMi
Pjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlJlc29sdmVOYW1lcy5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0IHNyYz0iUmVzb2x2ZU92ZXJsb2FkSW1wbC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0i
UmVzb2x2ZVByb3BlcnRpZXMuanMiPjwvc2NyaXB0PgpAQCAtMTM0LDYgKzEzNCw3IEBACiA8c2Ny
aXB0IHNyYz0iVHlwZURlZi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iVHlwZURlZlJlc29s
dmVyLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJUeXBlUmVmLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJUeXBlT3ZlcmxvYWRSZXNvbHV0aW9uRmFpbHVyZS5qcyI+PC9zY3JpcHQ+CiA8
c2NyaXB0IHNyYz0iVHlwZWRWYWx1ZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iVWludExp
dGVyYWwuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlVpbnRMaXRlcmFsVHlwZS5qcyI+PC9z
Y3JpcHQ+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>