<?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>216521</bug_id>
          
          <creation_ts>2020-09-14 19:53:38 -0700</creation_ts>
          <short_desc>[JSC] Apply Intl.DateTimeFormat hour-cycle correctly when timeStyle is used</short_desc>
          <delta_ts>2020-09-15 15:57:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>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>213425</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1688552</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-09-14 19:53:38 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688555</commentid>
    <comment_count>1</comment_count>
      <attachid>408781</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-09-14 19:56:41 -0700</bug_when>
    <thetext>Created attachment 408781
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688584</commentid>
    <comment_count>2</comment_count>
      <attachid>408791</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-09-14 22:11:39 -0700</bug_when>
    <thetext>Created attachment 408791
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688585</commentid>
    <comment_count>3</comment_count>
      <attachid>408791</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-09-14 22:13:47 -0700</bug_when>
    <thetext>Comment on attachment 408791
Patch

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

&gt; JSTests/stress/intl-date-time-format-date-time-style-hour-cycle.js:14
&gt; +    shouldBe(o.format(now1), `00:00`);

If it is h23, we should not have AM.

&gt; JSTests/stress/intl-date-time-format-date-time-style-hour-cycle.js:23
&gt; +    shouldBe(o.format(now1), `24:00`);

If it is h24, we should not have AM.

&gt; JSTests/stress/intl-date-time-format-date-time-style-hour-cycle.js:50
&gt; +    shouldBe(o.format(now2), `12:00`);

If it is h23, we should not have PM.

&gt; JSTests/stress/intl-date-time-format-date-time-style-hour-cycle.js:59
&gt; +    shouldBe(o.format(now2), `12:00`);

If it is h24, we should not have PM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688587</commentid>
    <comment_count>4</comment_count>
      <attachid>408791</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-09-14 22:16:11 -0700</bug_when>
    <thetext>Comment on attachment 408791
Patch

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

&gt; JSTests/test262/expectations.yaml:1457
&gt; +  default: &apos;Test262Error: Result for date=medium and time=full Expected SameValue(Â«May 1, 1886 at 2:12:47 PM Coordinated Universal TimeÂ», Â«May 1, 1886, 2:12:47 PM Coordinated Universal TimeÂ») to be true&apos;
&gt; +  strict mode: &apos;Test262Error: Result for date=medium and time=full Expected SameValue(Â«May 1, 1886 at 2:12:47 PM Coordinated Universal TimeÂ», Â«May 1, 1886, 2:12:47 PM Coordinated Universal TimeÂ») to be true&apos;

This failure is due to ICU. I wonder if this is due to AppleICU since it passed in ICU67 on Linux. If it is AppleICU&apos;s intentional overriding, then we should adjust test262 side.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688593</commentid>
    <comment_count>5</comment_count>
      <attachid>408793</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-09-14 22:30:30 -0700</bug_when>
    <thetext>Created attachment 408793
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688794</commentid>
    <comment_count>6</comment_count>
      <attachid>408793</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-09-15 11:58:32 -0700</bug_when>
    <thetext>Comment on attachment 408793
Patch

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

r=me. I don&apos;t love the idea of implementing behavior that isn&apos;t spec yet, but I understand that SM is committed to their implementation and that the currently spec&apos;ed behavior is confusing for users.

&gt; Source/JavaScriptCore/runtime/IntlDateTimeFormat.cpp:397
&gt; +            switch (currentCharacter) {

Seems like this could easily share code with hourCycleFromPattern, but whether that ends up easier to read is up to you.

&gt; Source/JavaScriptCore/runtime/IntlDateTimeFormat.cpp:-478
&gt; -        // Set hour12 here to simplify hour logic later.

I&apos;m happy this is being updated. I remember laughing at this comment before because the logic is really rather confusing.

&gt; Source/JavaScriptCore/runtime/IntlDateTimeFormat.cpp:572
&gt; +        //
&gt; +        // 14. If hour12 is not undefined, then
&gt; +        //     a. Let hourCycle be null.

Hmm, in this particular case, I&apos;m not sure that the spec text is adding anything to your comment.

&gt; Source/JavaScriptCore/runtime/IntlDateTimeFormat.cpp:719
&gt; +        // [1]: https://github.com/tc39/ecma402/issues/402
&gt; +        // [2]: https://bugs.chromium.org/p/chromium/issues/detail?id=1045791
&gt; +        // [3]: https://github.com/tc39/ecma402/pull/436
&gt; +        // [4]: https://github.com/tc39/ecma402/issues/402#issuecomment-623628320

This is excellent info for a ChangeLog, but feels like too much transient detail for a comment...
That said, I do think it&apos;s important to reference what we&apos;re aligning with.

&gt; Source/JavaScriptCore/runtime/IntlDateTimeFormat.cpp:724
&gt; +                skeletonCharacter = &apos;j&apos;;

Seems like we wouldn&apos;t need to actually set anything here if we&apos;re having &apos;j&apos; be the default value.

&gt; Source/JavaScriptCore/runtime/IntlDateTimeFormat.cpp:908
&gt; +                    throwTypeError(globalObject, scope, &quot;failed to initialize DateIntervalFormat&quot;_s);

You mean DateTimeFormat? :D

&gt; Source/JavaScriptCore/runtime/IntlDateTimeFormat.cpp:917
&gt; +                    throwTypeError(globalObject, scope, &quot;failed to initialize DateIntervalFormat&quot;_s);

Ditto.

&gt; Source/JavaScriptCore/runtime/IntlDateTimeFormat.cpp:932
&gt; +    // After generating pattern from skeleton, we need to change h11 v.s. h12 and h23 v.s. h24 if hourCycle is specified.

nittiest of nits: vs., not v.s.

&gt; JSTests/stress/intl-datetimeformat-hour-cycle.js:1
&gt; +// This test is specifically focusing on hour-cycle behavior of Intl.DateTimeFormat.

I think that&apos;s technically clear from the filename. :P</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688890</commentid>
    <comment_count>7</comment_count>
      <attachid>408793</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-09-15 15:51:01 -0700</bug_when>
    <thetext>Comment on attachment 408793
Patch

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

Thanks!

&gt;&gt; Source/JavaScriptCore/runtime/IntlDateTimeFormat.cpp:397
&gt;&gt; +            switch (currentCharacter) {
&gt; 
&gt; Seems like this could easily share code with hourCycleFromPattern, but whether that ends up easier to read is up to you.

Sounds nice. I created hourCycleFromSymbol for this purpose.

&gt;&gt; Source/JavaScriptCore/runtime/IntlDateTimeFormat.cpp:-478
&gt;&gt; -        // Set hour12 here to simplify hour logic later.
&gt; 
&gt; I&apos;m happy this is being updated. I remember laughing at this comment before because the logic is really rather confusing.

lol, agree :D

&gt;&gt; Source/JavaScriptCore/runtime/IntlDateTimeFormat.cpp:572
&gt;&gt; +        //     a. Let hourCycle be null.
&gt; 
&gt; Hmm, in this particular case, I&apos;m not sure that the spec text is adding anything to your comment.

OK, removed.

&gt;&gt; Source/JavaScriptCore/runtime/IntlDateTimeFormat.cpp:719
&gt;&gt; +        // [4]: https://github.com/tc39/ecma402/issues/402#issuecomment-623628320
&gt; 
&gt; This is excellent info for a ChangeLog, but feels like too much transient detail for a comment...
&gt; That said, I do think it&apos;s important to reference what we&apos;re aligning with.

OK, removed these links while stating that this is aligned to SpiderMonkey&apos;s behavior.

&gt;&gt; Source/JavaScriptCore/runtime/IntlDateTimeFormat.cpp:724
&gt;&gt; +                skeletonCharacter = &apos;j&apos;;
&gt; 
&gt; Seems like we wouldn&apos;t need to actually set anything here if we&apos;re having &apos;j&apos; be the default value.

Removed.

&gt;&gt; Source/JavaScriptCore/runtime/IntlDateTimeFormat.cpp:908
&gt;&gt; +                    throwTypeError(globalObject, scope, &quot;failed to initialize DateIntervalFormat&quot;_s);
&gt; 
&gt; You mean DateTimeFormat? :D

Oops, lol. Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/IntlDateTimeFormat.cpp:917
&gt;&gt; +                    throwTypeError(globalObject, scope, &quot;failed to initialize DateIntervalFormat&quot;_s);
&gt; 
&gt; Ditto.

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/IntlDateTimeFormat.cpp:932
&gt;&gt; +    // After generating pattern from skeleton, we need to change h11 v.s. h12 and h23 v.s. h24 if hourCycle is specified.
&gt; 
&gt; nittiest of nits: vs., not v.s.

Fixed.

&gt;&gt; JSTests/stress/intl-datetimeformat-hour-cycle.js:1
&gt;&gt; +// This test is specifically focusing on hour-cycle behavior of Intl.DateTimeFormat.
&gt; 
&gt; I think that&apos;s technically clear from the filename. :P

Dropped :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688892</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-09-15 15:56:38 -0700</bug_when>
    <thetext>Committed r267108: &lt;https://trac.webkit.org/changeset/267108&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688893</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-09-15 15:57:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/68947322&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408781</attachid>
            <date>2020-09-14 19:56:41 -0700</date>
            <delta_ts>2020-09-14 22:11:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216521-20200914195640.patch</filename>
            <type>text/plain</type>
            <size>27582</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3MDA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
YjgwMjg1NDg2Njc0ZWViOTI2MDIyMTQzYjUzMmUwYjA0Nzk0OWVhLi41ZGQ5NzRhNTdmYzQ0Zjdk
MmRjNTI4MjE5NzkwYzJhYTA3ZGI2N2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAyMC0wOS0xNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEFwcGx5IEludGwuRGF0ZVRpbWVGb3JtYXQgaG91ci1jeWNsZSBj
b3JyZWN0bHkgd2hlbiB0aW1lU3R5bGUgaXMgdXNlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2NTIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHA6
CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdDo6c2V0Rm9ybWF0c0Zyb21QYXR0ZXJu
KToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0OjpwYXJzZUhvdXJDeWNsZSk6Cisg
ICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdDo6aG91ckN5Y2xlRnJvbVBhdHRlcm4pOgor
ICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OnJlcGxhY2VIb3VyQ3ljbGVJblNrZWxl
dG9uKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0OjpyZXBsYWNlSG91ckN5Y2xl
SW5QYXR0ZXJuKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0Ojppbml0aWFsaXpl
RGF0ZVRpbWVGb3JtYXQpOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OmhvdXJD
eWNsZVN0cmluZyk6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdDo6cmVzb2x2ZWRP
cHRpb25zIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0OjpjcmVhdGVE
YXRlSW50ZXJ2YWxGb3JtYXRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0
ZVRpbWVGb3JtYXQuaDoKKwogMjAyMC0wOS0xMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBw
bGUuY29tPgogCiAgICAgICAgIFtKU0NdIENhbm9uaWNhbGl6ZSAidHJ1ZSIgdW5pY29kZSBleHRl
bnNpb24gdHlwZSB2YWx1ZSB0byAiIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAKaW5kZXggMjk3NjQ1OWUxNWZiYWYzM2UxYWE1
ZWEyNTQ4ODRkYjg4ZmJlNjkxNC4uYTFhNTEwZDg1NmQ0ZWJhNDRkNDQzODQ5N2IxY2I2M2RjNzk5
NzZmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVU
aW1lRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0
ZVRpbWVGb3JtYXQuY3BwCkBAIC0zMjksMTggKzMyOSw2IEBAIHZvaWQgSW50bERhdGVUaW1lRm9y
bWF0OjpzZXRGb3JtYXRzRnJvbVBhdHRlcm4oY29uc3QgU3RyaW5nVmlldyYgcGF0dGVybikKICAg
ICAgICAgICAgICsraTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIElmIGhvdXJDeWNsZSB3YXMg
bnVsbCwgdGhpcyBzZXRzIGl0IHRvIHRoZSBsb2NhbGUgZGVmYXVsdC4KLSAgICAgICAgaWYgKG1f
aG91ckN5Y2xlLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBpZiAoY3VycmVudENoYXJhY3RlciA9
PSAnaCcpCi0gICAgICAgICAgICAgICAgbV9ob3VyQ3ljbGUgPSAiaDEyIl9zOwotICAgICAgICAg
ICAgZWxzZSBpZiAoY3VycmVudENoYXJhY3RlciA9PSAnSCcpCi0gICAgICAgICAgICAgICAgbV9o
b3VyQ3ljbGUgPSAiaDIzIl9zOwotICAgICAgICAgICAgZWxzZSBpZiAoY3VycmVudENoYXJhY3Rl
ciA9PSAnaycpCi0gICAgICAgICAgICAgICAgbV9ob3VyQ3ljbGUgPSAiaDI0Il9zOwotICAgICAg
ICAgICAgZWxzZSBpZiAoY3VycmVudENoYXJhY3RlciA9PSAnSycpCi0gICAgICAgICAgICAgICAg
bV9ob3VyQ3ljbGUgPSAiaDExIl9zOwotICAgICAgICB9Ci0KICAgICAgICAgc3dpdGNoIChjdXJy
ZW50Q2hhcmFjdGVyKSB7CiAgICAgICAgIGNhc2UgJ0cnOgogICAgICAgICAgICAgaWYgKGNvdW50
IDw9IDMpCkBAIC0zOTgsMTIgKzM4NiwzNCBAQCB2b2lkIEludGxEYXRlVGltZUZvcm1hdDo6c2V0
Rm9ybWF0c0Zyb21QYXR0ZXJuKGNvbnN0IFN0cmluZ1ZpZXcmIHBhdHRlcm4pCiAgICAgICAgIGNh
c2UgJ2gnOgogICAgICAgICBjYXNlICdIJzoKICAgICAgICAgY2FzZSAnayc6Ci0gICAgICAgIGNh
c2UgJ0snOgorICAgICAgICBjYXNlICdLJzogeworICAgICAgICAgICAgLy8gUG9wdWxhdGUgaG91
ckN5Y2xlIGZyb20gYWN0dWFsbHkgZ2VuZXJhdGVkIHBhdHRlcm5zLiBJdCBpcyBwb3NzaWJsZSB0
aGF0IGxvY2FsZSBvciBvcHRpb24gaXMgc3BlY2lmeWluZyBob3VyQ3ljbGUgZXhwbGljaXRseSwK
KyAgICAgICAgICAgIC8vIGJ1dCB0aGUgZ2VuZXJhdGVkIHBhdHRlcm4gZG9lcyBub3QgaW5jbHVk
ZSByZWxhdGVkIHBhcnQgc2luY2UgdGhlIHBhdHRlcm4gZG9lcyBub3QgaW5jbHVkZSBob3Vycy4K
KyAgICAgICAgICAgIC8vIFRoaXMgaXMgdGVzdGVkIGluIHRlc3QyNjIvdGVzdC9pbnRsNDAyL0Rh
dGVUaW1lRm9ybWF0L3Byb3RvdHlwZS9yZXNvbHZlZE9wdGlvbnMvaG91ckN5Y2xlLWRhdGVTdHls
ZS5qcyBhbmQgb3VyIHN0cmVzcyB0ZXN0cy4KKyAgICAgICAgICAgIC8vIEV4YW1wbGU6CisgICAg
ICAgICAgICAvLyAgICAgbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoYGRlLXUtaGMtaDExYCwgewor
ICAgICAgICAgICAgLy8gICAgICAgICBkYXRlU3R5bGU6ICJmdWxsIgorICAgICAgICAgICAgLy8g
ICAgIH0pLnJlc29sdmVkT3B0aW9ucygpLmhvdXJDeWNsZSA9PT0gdW5kZWZpbmVkCisgICAgICAg
ICAgICBzd2l0Y2ggKGN1cnJlbnRDaGFyYWN0ZXIpIHsKKyAgICAgICAgICAgIGNhc2UgJ2gnOgor
ICAgICAgICAgICAgICAgIG1faG91ckN5Y2xlID0gSG91ckN5Y2xlOjpIMTI7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICdIJzoKKyAgICAgICAgICAgICAgICBtX2hv
dXJDeWNsZSA9IEhvdXJDeWNsZTo6SDIzOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgY2FzZSAnayc6CisgICAgICAgICAgICAgICAgbV9ob3VyQ3ljbGUgPSBIb3VyQ3ljbGU6
OkgyNDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJ0snOgorICAg
ICAgICAgICAgICAgIG1faG91ckN5Y2xlID0gSG91ckN5Y2xlOjpIMTE7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoY291bnQgPT0gMSkKICAg
ICAgICAgICAgICAgICBtX2hvdXIgPSBIb3VyOjpOdW1lcmljOwogICAgICAgICAgICAgZWxzZSBp
ZiAoY291bnQgPT0gMikKICAgICAgICAgICAgICAgICBtX2hvdXIgPSBIb3VyOjpUd29EaWdpdDsK
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2UgJ20nOgogICAgICAg
ICAgICAgaWYgKGNvdW50ID09IDEpCiAgICAgICAgICAgICAgICAgbV9taW51dGUgPSBNaW51dGU6
Ok51bWVyaWM7CkBAIC00MzEsNiArNDQxLDg0IEBAIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0Ojpz
ZXRGb3JtYXRzRnJvbVBhdHRlcm4oY29uc3QgU3RyaW5nVmlldyYgcGF0dGVybikKICAgICB9CiB9
CiAKK0ludGxEYXRlVGltZUZvcm1hdDo6SG91ckN5Y2xlIEludGxEYXRlVGltZUZvcm1hdDo6cGFy
c2VIb3VyQ3ljbGUoY29uc3QgU3RyaW5nJiBob3VyQ3ljbGUpCit7CisgICAgaWYgKGhvdXJDeWNs
ZSA9PSAiaDExIl9zKQorICAgICAgICByZXR1cm4gSG91ckN5Y2xlOjpIMTE7CisgICAgaWYgKGhv
dXJDeWNsZSA9PSAiaDEyIl9zKQorICAgICAgICByZXR1cm4gSG91ckN5Y2xlOjpIMTI7CisgICAg
aWYgKGhvdXJDeWNsZSA9PSAiaDIzIl9zKQorICAgICAgICByZXR1cm4gSG91ckN5Y2xlOjpIMjM7
CisgICAgaWYgKGhvdXJDeWNsZSA9PSAiaDI0Il9zKQorICAgICAgICByZXR1cm4gSG91ckN5Y2xl
OjpIMjQ7CisgICAgcmV0dXJuIEhvdXJDeWNsZTo6Tm9uZTsKK30KKworSW50bERhdGVUaW1lRm9y
bWF0OjpIb3VyQ3ljbGUgSW50bERhdGVUaW1lRm9ybWF0Ojpob3VyQ3ljbGVGcm9tUGF0dGVybihj
b25zdCBWZWN0b3I8VUNoYXIsIDMyPiYgcGF0dGVybikKK3sKKyAgICBmb3IgKGF1dG8gY2hhcmFj
dGVyIDogcGF0dGVybikgeworICAgICAgICBzd2l0Y2ggKGNoYXJhY3RlcikgeworICAgICAgICBj
YXNlICdLJzoKKyAgICAgICAgICAgIHJldHVybiBIb3VyQ3ljbGU6OkgxMTsKKyAgICAgICAgY2Fz
ZSAnaCc6CisgICAgICAgICAgICByZXR1cm4gSG91ckN5Y2xlOjpIMTI7CisgICAgICAgIGNhc2Ug
J0gnOgorICAgICAgICAgICAgcmV0dXJuIEhvdXJDeWNsZTo6SDIzOworICAgICAgICBjYXNlICdr
JzoKKyAgICAgICAgICAgIHJldHVybiBIb3VyQ3ljbGU6OkgyNDsKKyAgICAgICAgfQorICAgIH0K
KyAgICByZXR1cm4gSG91ckN5Y2xlOjpOb25lOworfQorCit2b2lkIEludGxEYXRlVGltZUZvcm1h
dDo6cmVwbGFjZUhvdXJDeWNsZUluU2tlbGV0b24oVmVjdG9yPFVDaGFyLCAzMj4mIHNrZWxldG9u
LCBib29sIGlzSG91cjEyKQoreworICAgIFVDaGFyIHNrZWxldG9uQ2hhcmFjdGVyID0gJ0gnOwor
ICAgIGlmIChpc0hvdXIxMikKKyAgICAgICAgc2tlbGV0b25DaGFyYWN0ZXIgPSAnaCc7CisgICAg
Zm9yIChhdXRvJiBjaGFyYWN0ZXIgOiBza2VsZXRvbikgeworICAgICAgICBzd2l0Y2ggKGNoYXJh
Y3RlcikgeworICAgICAgICBjYXNlICdoJzoKKyAgICAgICAgY2FzZSAnSCc6CisgICAgICAgIGNh
c2UgJ2onOgorICAgICAgICAgICAgY2hhcmFjdGVyID0gc2tlbGV0b25DaGFyYWN0ZXI7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBJbnRsRGF0ZVRpbWVG
b3JtYXQ6OnJlcGxhY2VIb3VyQ3ljbGVJblBhdHRlcm4oVmVjdG9yPFVDaGFyLCAzMj4mIHBhdHRl
cm4sIEhvdXJDeWNsZSBob3VyQ3ljbGUpCit7CisgICAgVUNoYXIgaG91ckZyb21Ib3VyQ3ljbGUg
PSAnSCc7CisgICAgc3dpdGNoIChob3VyQ3ljbGUpIHsKKyAgICBjYXNlIEhvdXJDeWNsZTo6SDEx
OgorICAgICAgICBob3VyRnJvbUhvdXJDeWNsZSA9ICdLJzsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBIb3VyQ3ljbGU6OkgxMjoKKyAgICAgICAgaG91ckZyb21Ib3VyQ3ljbGUgPSAnaCc7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgSG91ckN5Y2xlOjpIMjM6CisgICAgICAgIGhvdXJGcm9t
SG91ckN5Y2xlID0gJ0gnOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEhvdXJDeWNsZTo6SDI0
OgorICAgICAgICBob3VyRnJvbUhvdXJDeWNsZSA9ICdrJzsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBIb3VyQ3ljbGU6Ok5vbmU6CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBmb3Ig
KGF1dG8mIGNoYXJhY3RlciA6IHBhdHRlcm4pIHsKKyAgICAgICAgc3dpdGNoIChjaGFyYWN0ZXIp
IHsKKyAgICAgICAgY2FzZSAnSyc6CisgICAgICAgIGNhc2UgJ2gnOgorICAgICAgICBjYXNlICdI
JzoKKyAgICAgICAgY2FzZSAnayc6CisgICAgICAgICAgICBjaGFyYWN0ZXIgPSBob3VyRnJvbUhv
dXJDeWNsZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorfQorCiAvLyBo
dHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWE0MDIvI3NlYy1pbml0aWFsaXplZGF0ZXRpbWVmb3Jt
YXQKIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0Ojppbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBsb2NhbGVzLCBKU1ZhbHVlIG9yaWdp
bmFsT3B0aW9ucykKIHsKQEAgLTQ3MCwxNyArNTU4LDE2IEBAIHZvaWQgSW50bERhdGVUaW1lRm9y
bWF0Ojppbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwKIAogICAgIFRyaVN0YXRlIGhvdXIxMiA9IGludGxCb29sZWFuT3B0aW9uKGdsb2JhbE9iamVj
dCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+aG91cjEyKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgIGJvb2wgaXNIb3VyMTJVbmRlZmluZWQgPSAoaG91
cjEyID09IFRyaVN0YXRlOjpJbmRldGVybWluYXRlKTsKIAotICAgIFN0cmluZyBob3VyQ3ljbGUg
PSBpbnRsU3RyaW5nT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1l
cy0+aG91ckN5Y2xlLCB7ICJoMTEiLCAiaDEyIiwgImgyMyIsICJoMjQiIH0sICJob3VyQ3ljbGUg
bXVzdCBiZSBcImgxMVwiLCBcImgxMlwiLCBcImgyM1wiLCBvciBcImgyNFwiIiwgbnVsbHB0cik7
CisgICAgSG91ckN5Y2xlIGhvdXJDeWNsZSA9IGludGxPcHRpb248SG91ckN5Y2xlPihnbG9iYWxP
YmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPmhvdXJDeWNsZSwgeyB7ICJoMTEiX3Ms
IEhvdXJDeWNsZTo6SDExIH0sIHsgImgxMiJfcywgSG91ckN5Y2xlOjpIMTIgfSwgeyAiaDIzIl9z
LCBIb3VyQ3ljbGU6OkgyMyB9LCB7ICJoMjQiX3MsIEhvdXJDeWNsZTo6SDI0IH0gfSwgImhvdXJD
eWNsZSBtdXN0IGJlIFwiaDExXCIsIFwiaDEyXCIsIFwiaDIzXCIsIG9yIFwiaDI0XCIiX3MsIEhv
dXJDeWNsZTo6Tm9uZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsK
LSAgICBpZiAoaXNIb3VyMTJVbmRlZmluZWQpIHsKLSAgICAgICAgLy8gU2V0IGhvdXIxMiBoZXJl
IHRvIHNpbXBsaWZ5IGhvdXIgbG9naWMgbGF0ZXIuCi0gICAgICAgIGhvdXIxMiA9IHRyaVN0YXRl
KGhvdXJDeWNsZSA9PSAiaDExIiB8fCBob3VyQ3ljbGUgPT0gImgxMiIpOwotICAgICAgICBpZiAo
IWhvdXJDeWNsZS5pc051bGwoKSkKLSAgICAgICAgICAgIGxvY2FsZU9wdGlvbnNbc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFJlbGV2YW50RXh0ZW5zaW9uS2V5OjpIYyldID0gaG91ckN5Y2xlOwotICAg
IH0gZWxzZQorICAgIGlmIChob3VyMTIgPT0gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGUpIHsKKyAg
ICAgICAgaWYgKGhvdXJDeWNsZSAhPSBIb3VyQ3ljbGU6Ok5vbmUpCisgICAgICAgICAgICBsb2Nh
bGVPcHRpb25zW3N0YXRpY19jYXN0PHVuc2lnbmVkPihSZWxldmFudEV4dGVuc2lvbktleTo6SGMp
XSA9IFN0cmluZyhob3VyQ3ljbGVTdHJpbmcoaG91ckN5Y2xlKSk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgLy8gSWYgdGhlcmUgaXMgaG91cjEyLCBob3VyQ3ljbGUgaXMgaWdub3JlZC4KICAgICAg
ICAgbG9jYWxlT3B0aW9uc1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVsZXZhbnRFeHRlbnNpb25L
ZXk6OkhjKV0gPSBTdHJpbmcoKTsKKyAgICB9CiAKICAgICBjb25zdCBIYXNoU2V0PFN0cmluZz4m
IGF2YWlsYWJsZUxvY2FsZXMgPSBpbnRsRGF0ZVRpbWVGb3JtYXRBdmFpbGFibGVMb2NhbGVzKCk7
CiAgICAgYXV0byByZXNvbHZlZCA9IHJlc29sdmVMb2NhbGUoZ2xvYmFsT2JqZWN0LCBhdmFpbGFi
bGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzLCBsb2NhbGVNYXRjaGVyLCBsb2NhbGVPcHRpb25z
LCB7IFJlbGV2YW50RXh0ZW5zaW9uS2V5OjpDYSwgUmVsZXZhbnRFeHRlbnNpb25LZXk6OkhjLCBS
ZWxldmFudEV4dGVuc2lvbktleTo6TnUgfSwgbG9jYWxlRGF0YSk7CkBAIC00OTksNyArNTg2LDcg
QEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIGVsc2UgaWYgKG1fY2FsZW5kYXIgPT0gImV0
aGlvYWEiKQogICAgICAgICBtX2NhbGVuZGFyID0gImV0aGlvcGljLWFtZXRlLWFsZW0iX3M7CiAK
LSAgICBtX2hvdXJDeWNsZSA9IHJlc29sdmVkLmV4dGVuc2lvbnNbc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KFJlbGV2YW50RXh0ZW5zaW9uS2V5OjpIYyldOworICAgIGhvdXJDeWNsZSA9IHBhcnNlSG91
ckN5Y2xlKHJlc29sdmVkLmV4dGVuc2lvbnNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJlbGV2YW50
RXh0ZW5zaW9uS2V5OjpIYyldKTsKICAgICBtX251bWJlcmluZ1N5c3RlbSA9IHJlc29sdmVkLmV4
dGVuc2lvbnNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJlbGV2YW50RXh0ZW5zaW9uS2V5OjpOdSld
OwogICAgIG1fZGF0YUxvY2FsZSA9IHJlc29sdmVkLmRhdGFMb2NhbGU7CiAgICAgQ1N0cmluZyBk
YXRhTG9jYWxlV2l0aEV4dGVuc2lvbnMgPSBtYWtlU3RyaW5nKG1fZGF0YUxvY2FsZSwgIi11LWNh
LSIsIG1fY2FsZW5kYXIsICItbnUtIiwgbV9udW1iZXJpbmdTeXN0ZW0pLnV0ZjgoKTsKQEAgLTYw
OSwyNSArNjk2LDQyIEBAIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0Ojppbml0aWFsaXplRGF0ZVRp
bWVGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKIAogICAgIEhvdXIgaG91ciA9
IGludGxPcHRpb248SG91cj4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVz
LT5ob3VyLCB7IHsgIjItZGlnaXQiX3MsIEhvdXI6OlR3b0RpZ2l0IH0sIHsgIm51bWVyaWMiX3Ms
IEhvdXI6Ok51bWVyaWMgfSB9LCAiaG91ciBtdXN0IGJlIFwiMi1kaWdpdFwiIG9yIFwibnVtZXJp
Y1wiIl9zLCBIb3VyOjpOb25lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lk
KCkpOwotICAgIHN3aXRjaCAoaG91cikgewotICAgIGNhc2UgSG91cjo6VHdvRGlnaXQ6Ci0gICAg
ICAgIGlmIChpc0hvdXIxMlVuZGVmaW5lZCAmJiBtX2hvdXJDeWNsZS5pc051bGwoKSkKLSAgICAg
ICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJqaiIpOwotICAgICAgICBlbHNl
IGlmIChob3VyMTIgPT0gVHJpU3RhdGU6OlRydWUpCi0gICAgICAgICAgICBza2VsZXRvbkJ1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgiaGgiKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgc2tlbGV0
b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoIkhIIik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
SG91cjo6TnVtZXJpYzoKLSAgICAgICAgaWYgKGlzSG91cjEyVW5kZWZpbmVkICYmIG1faG91ckN5
Y2xlLmlzTnVsbCgpKQotICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnaicpOwot
ICAgICAgICBlbHNlIGlmIChob3VyMTIgPT0gVHJpU3RhdGU6OlRydWUpCi0gICAgICAgICAgICBz
a2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCdoJyk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNr
ZWxldG9uQnVpbGRlci5hcHBlbmQoJ0gnKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBIb3Vy
OjpOb25lOgotICAgICAgICBicmVhazsKKyAgICB7CisgICAgICAgIC8vIEluIHNrZWxldG9uIGNv
bnN0cnVjdGlvbiwgdGhlcmUgaXMgbm8gd2F5IHRvIHNwZWNpZnkgaDExIHYucy4gaDEyLCBoMjMg
di5zLiBoMjQuIFRoZXkgYXJlIGVuZm9yY2VkIGFmdGVyIGdlbmVyYXRpbmcgcGF0dGVybi4KKyAg
ICAgICAgVUNoYXIgc2tlbGV0b25DaGFyYWN0ZXIgPSAnaic7CisgICAgICAgIGlmIChob3VyMTIg
PT0gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGUpIHsKKyAgICAgICAgICAgIHN3aXRjaCAoaG91ckN5
Y2xlKSB7CisgICAgICAgICAgICBjYXNlIEhvdXJDeWNsZTo6Tm9uZToKKyAgICAgICAgICAgICAg
ICBza2VsZXRvbkNoYXJhY3RlciA9ICdqJzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgSG91ckN5Y2xlOjpIMTE6CisgICAgICAgICAgICBjYXNlIEhvdXJDeWNsZTo6
SDEyOgorICAgICAgICAgICAgICAgIHNrZWxldG9uQ2hhcmFjdGVyID0gJ2gnOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBIb3VyQ3ljbGU6OkgyMzoKKyAgICAgICAg
ICAgIGNhc2UgSG91ckN5Y2xlOjpIMjQ6CisgICAgICAgICAgICAgICAgc2tlbGV0b25DaGFyYWN0
ZXIgPSAnSCc7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAvLyBXZSBwcmVmZXIgaG91cjEyIG92ZXIgaG91ckN5Y2xl
LiBJZiBob3VyMTIgaXMgc3BlY2lmaWVkLCB3ZSBpZ25vcmUgaG91ckN5Y2xlLgorICAgICAgICAg
ICAgaWYgKGhvdXIxMiA9PSBUcmlTdGF0ZTo6VHJ1ZSkKKyAgICAgICAgICAgICAgICBza2VsZXRv
bkNoYXJhY3RlciA9ICdoJzsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBza2Vs
ZXRvbkNoYXJhY3RlciA9ICdIJzsKKyAgICAgICAgfQorCisgICAgICAgIHN3aXRjaCAoaG91cikg
eworICAgICAgICBjYXNlIEhvdXI6OlR3b0RpZ2l0OgorICAgICAgICAgICAgc2tlbGV0b25CdWls
ZGVyLmFwcGVuZChza2VsZXRvbkNoYXJhY3Rlcik7CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxk
ZXIuYXBwZW5kKHNrZWxldG9uQ2hhcmFjdGVyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIEhvdXI6Ok51bWVyaWM6CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5k
KHNrZWxldG9uQ2hhcmFjdGVyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEhv
dXI6Ok5vbmU6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGlm
IChPcHRpb25zOjp1c2VJbnRsRGF0ZVRpbWVGb3JtYXREYXlQZXJpb2QoKSkgewpAQCAtNzAxLDcg
KzgwNSwxOCBAQCB2b2lkIEludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVUaW1lRm9y
bWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgbV90aW1lU3R5bGUgPSBpbnRs
T3B0aW9uPERhdGVUaW1lU3R5bGU+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlO
YW1lcy0+dGltZVN0eWxlLCB7IHsgImZ1bGwiX3MsIERhdGVUaW1lU3R5bGU6OkZ1bGwgfSwgeyAi
bG9uZyJfcywgRGF0ZVRpbWVTdHlsZTo6TG9uZyB9LCB7ICJtZWRpdW0iX3MsIERhdGVUaW1lU3R5
bGU6Ok1lZGl1bSB9LCB7ICJzaG9ydCJfcywgRGF0ZVRpbWVTdHlsZTo6U2hvcnQgfSB9LCAidGlt
ZVN0eWxlIG11c3QgYmUgXCJmdWxsXCIsIFwibG9uZ1wiLCBcIm1lZGl1bVwiLCBvciBcInNob3J0
XCIiX3MsIERhdGVUaW1lU3R5bGU6Ok5vbmUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHZvaWQoKSk7CiAKLSAgICBib29sIGNhbkluY2x1ZGVIb3VyID0gdHJ1ZTsKKworICAgIGF1
dG8gcGF0dGVybkZyb21Ta2VsZXRvbiA9IFsmXShjb25zdCBVQ2hhciogc2tlbGV0b24sIHVuc2ln
bmVkIHNrZWxldG9uU2l6ZSwgVmVjdG9yPFVDaGFyLCAzMj4mIHBhdHRlcm5CdWZmZXIsIFVFcnJv
ckNvZGUmIHN0YXR1cykgeworICAgICAgICAvLyBBbHdheXMgdXNlIElDVSBkYXRlIGZvcm1hdCBn
ZW5lcmF0b3IsIHJhdGhlciB0aGFuIG91ciBvd24gcGF0dGVybiBsaXN0IGFuZCBtYXRjaGVyLgor
ICAgICAgICBhdXRvIGdlbmVyYXRvciA9IHN0ZDo6dW5pcXVlX3B0cjxVRGF0ZVRpbWVQYXR0ZXJu
R2VuZXJhdG9yLCBJQ1VEZWxldGVyPHVkYXRwZ19jbG9zZT4+KHVkYXRwZ19vcGVuKGRhdGFMb2Nh
bGVXaXRoRXh0ZW5zaW9ucy5kYXRhKCksICZzdGF0dXMpKTsKKyAgICAgICAgaWYgKFVfRkFJTFVS
RShzdGF0dXMpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHN0YXR1cyA9IGNhbGxC
dWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1ZGF0cGdfZ2V0QmVzdFBhdHRlcm5XaXRoT3B0aW9ucywg
Z2VuZXJhdG9yLmdldCgpLCBza2VsZXRvbiwgc2tlbGV0b25TaXplLCBVREFUUEdfTUFUQ0hfSE9V
Ul9GSUVMRF9MRU5HVEgsIHBhdHRlcm5CdWZmZXIpOworICAgICAgICBpZiAoVV9GQUlMVVJFKHN0
YXR1cykpCisgICAgICAgICAgICByZXR1cm47CisgICAgfTsKKwogICAgIFZlY3RvcjxVQ2hhciwg
MzI+IHBhdHRlcm5CdWZmZXI7CiAgICAgaWYgKG1fZGF0ZVN0eWxlICE9IERhdGVUaW1lU3R5bGU6
Ok5vbmUgfHwgbV90aW1lU3R5bGUgIT0gRGF0ZVRpbWVTdHlsZTo6Tm9uZSkgewogICAgICAgICAv
LyAzMC4gRm9yIGVhY2ggcm93IGluIFRhYmxlIDEsIGV4Y2VwdCB0aGUgaGVhZGVyIHJvdywgZG8K
QEAgLTcxNCwxMiArODI5LDYgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVE
YXRlVGltZUZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gSWYgdGltZVN0eWxlIGlzIG5vdCBzcGVj
aWZpZWQsIG1faG91ckN5Y2xlIGRvZXMgbm90IG1hdHRlci4gTGV0J3Mgc2tpcCBlbmZvcmNpbmcg
c3RlcC4KLSAgICAgICAgaWYgKG1fdGltZVN0eWxlID09IERhdGVUaW1lU3R5bGU6Ok5vbmUpIHsK
LSAgICAgICAgICAgIGNhbkluY2x1ZGVIb3VyID0gZmFsc2U7Ci0gICAgICAgICAgICBtX2hvdXJD
eWNsZSA9IFN0cmluZygpOwotICAgICAgICB9Ci0KICAgICAgICAgYXV0byBwYXJzZVVEYXRlRm9y
bWF0U3R5bGUgPSBbXShEYXRlVGltZVN0eWxlIHN0eWxlKSB7CiAgICAgICAgICAgICBzd2l0Y2gg
KHN0eWxlKSB7CiAgICAgICAgICAgICBjYXNlIERhdGVUaW1lU3R5bGU6OkZ1bGw6CkBAIC03Mzgs
NyArODQ3LDcgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVGltZUZv
cm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogCiAgICAgICAgIC8vIFdlIGNhbm5v
dCB1c2UgdGhpcyBVRGF0ZUZvcm1hdCBkaXJlY3RseSB5ZXQgYmVjYXVzZSB3ZSBuZWVkIHRvIGVu
Zm9yY2Ugc3BlY2lmaWVkIGhvdXJDeWNsZS4KICAgICAgICAgLy8gRmlyc3QsIHdlIGNyZWF0ZSBV
RGF0ZUZvcm1hdCB2aWEgZGF0ZVN0eWxlIGFuZCB0aW1lU3R5bGUuIEFuZCB0aGVuIGNvbnZlcnQg
aXQgdG8gcGF0dGVybiBzdHJpbmcuCi0gICAgICAgIC8vIEFmdGVyIHVwZGF0aW5nIHRoaXMgcGF0
dGVybiBzdHJpbmcgd2l0aCBtX2hvdXJDeWNsZSwgd2UgY3JlYXRlIGEgZmluYWwgVURhdGVGb3Jt
YXQgd2l0aCB0aGUgdXBkYXRlZCBwYXR0ZXJuIHN0cmluZy4KKyAgICAgICAgLy8gQWZ0ZXIgdXBk
YXRpbmcgdGhpcyBwYXR0ZXJuIHN0cmluZyB3aXRoIGhvdXJDeWNsZSwgd2UgY3JlYXRlIGEgZmlu
YWwgVURhdGVGb3JtYXQgd2l0aCB0aGUgdXBkYXRlZCBwYXR0ZXJuIHN0cmluZy4KICAgICAgICAg
VUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgICAgIFN0cmluZ1ZpZXcgdGlt
ZVpvbmVWaWV3KG1fdGltZVpvbmUpOwogICAgICAgICBhdXRvIGRhdGVGb3JtYXRGcm9tU3R5bGUg
PSBzdGQ6OnVuaXF1ZV9wdHI8VURhdGVGb3JtYXQsIFVEYXRlRm9ybWF0RGVsZXRlcj4odWRhdF9v
cGVuKHBhcnNlVURhdGVGb3JtYXRTdHlsZShtX3RpbWVTdHlsZSksIHBhcnNlVURhdGVGb3JtYXRT
dHlsZShtX2RhdGVTdHlsZSksIGRhdGFMb2NhbGVXaXRoRXh0ZW5zaW9ucy5kYXRhKCksIHRpbWVa
b25lVmlldy51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwgdGltZVpvbmVWaWV3Lmxlbmd0aCgpLCBu
dWxscHRyLCAtMSwgJnN0YXR1cykpOwpAQCAtNzUyLDgyICs4NjEsNTUgQEAgdm9pZCBJbnRsRGF0
ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LAogICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgImZhaWxlZCB0byBpbml0aWFsaXplIERhdGVUaW1lRm9ybWF0Il9zKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIElmIGhvdXIgaXMg
bm90IHNwZWNpZmllZCwgbV9ob3VyQ3ljbGUgZG9lcyBub3QgbWF0dGVyLiBMZXQncyBza2lwIGVu
Zm9yY2luZyBzdGVwLgotICAgICAgICBpZiAoaG91ciA9PSBIb3VyOjpOb25lKSB7Ci0gICAgICAg
ICAgICBjYW5JbmNsdWRlSG91ciA9IGZhbHNlOwotICAgICAgICAgICAgbV9ob3VyQ3ljbGUgPSBT
dHJpbmcoKTsKLSAgICAgICAgfQogCi0gICAgICAgIC8vIEFsd2F5cyB1c2UgSUNVIGRhdGUgZm9y
bWF0IGdlbmVyYXRvciwgcmF0aGVyIHRoYW4gb3VyIG93biBwYXR0ZXJuIGxpc3QgYW5kIG1hdGNo
ZXIuCi0gICAgICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgICAgICBh
dXRvKiBnZW5lcmF0b3IgPSB1ZGF0cGdfb3BlbihkYXRhTG9jYWxlV2l0aEV4dGVuc2lvbnMuZGF0
YSgpLCAmc3RhdHVzKTsKLSAgICAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAg
ICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRp
YWxpemUgRGF0ZVRpbWVGb3JtYXQiX3MpOwotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAv
LyBJdCBpcyBwb3NzaWJsZSB0aGF0IHRpbWVTdHlsZSBpbmNsdWRlcyBkYXlQZXJpb2QsIHdoaWNo
IGlzIHNlbnNpdGl2ZSB0byBob3VyLWN5Y2xlLgorICAgICAgICAvLyBJZiBkYXlQZXJpb2QgaXMg
aW5jbHVkZWQsIGp1c3QgcmVwbGFjaW5nIGhvdXIgYmFzZWQgb24gaG91ckN5Y2xlIC8gaG91cjEy
IHByb2R1Y2VzIHN0cmFuZ2UgcmVzdWx0cy4KKyAgICAgICAgLy8gTGV0J3MgY29uc2lkZXIgYWJv
dXQgdGhlIGV4YW1wbGUuIFRoZSBmb3JtYXR0ZWQgcmVzdWx0IGxvb2tzIGxpa2UgIjAyOjEyOjQ3
IFBNIENvb3JkaW5hdGVkIFVuaXZlcnNhbCBUaW1lIgorICAgICAgICAvLyBJZiB3ZSBzaW1wbHkg
cmVwbGFjZSAwMiB0byAxNCwgdGhpcyBiZWNvbWVzICIxNDoxMjo0NyBQTSBDb29yZGluYXRlZCBV
bml2ZXJzYWwgVGltZSIsIHRoaXMgbG9va3Mgc3RyYW5nZS4KKyAgICAgICAgLy8gV2Ugc2hvdWxk
IHJldHJpZXZlIHNrZWxldG9uIGZyb20gdGhlIHBhdHRlcm4sIGVuZm9yY2luZyBob3VyLWN5Y2xl
LCBhbmQgcmUtZ2VuZXJhdGluZyB0aGUgYmVzdCBwYXR0ZXJuIGZyb20gdGhlIG1vZGlmaWVkIHNr
ZWxldG9uIHRvIGdldCBub24tc3RyYW5nZSByZXN1bHQuCisgICAgICAgIGlmIChtX3RpbWVTdHls
ZSAhPSBEYXRlVGltZVN0eWxlOjpOb25lKSB7CisgICAgICAgICAgICBpZiAoaG91ckN5Y2xlICE9
IEhvdXJDeWNsZTo6Tm9uZSB8fCBob3VyMTIgIT0gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGUpIHsK
KyAgICAgICAgICAgICAgICBhdXRvIGlzSG91cjEyID0gW10oSG91ckN5Y2xlIGhvdXJDeWNsZSkg
eworICAgICAgICAgICAgICAgICAgICByZXR1cm4gaG91ckN5Y2xlID09IEhvdXJDeWNsZTo6SDEx
IHx8IGhvdXJDeWNsZSA9PSBIb3VyQ3ljbGU6OkgxMjsKKyAgICAgICAgICAgICAgICB9OworICAg
ICAgICAgICAgICAgIGJvb2wgc3BlY2lmaWVkSG91cjEyID0gZmFsc2U7CisgICAgICAgICAgICAg
ICAgLy8gSWYgaG91cjEyIGlzIHNwZWNpZmllZCwgd2UgcHJlZmVyIGl0IGFuZCBkaWdub3JlIGhv
dXJDeWNsZS4KKyAgICAgICAgICAgICAgICBpZiAoaG91cjEyICE9IFRyaVN0YXRlOjpJbmRldGVy
bWluYXRlKQorICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZWRIb3VyMTIgPSBob3VyMTIgPT0g
VHJpU3RhdGU6OlRydWU7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAg
ICBzcGVjaWZpZWRIb3VyMTIgPSBpc0hvdXIxMihob3VyQ3ljbGUpOworICAgICAgICAgICAgICAg
IGlmIChpc0hvdXIxMihob3VyQ3ljbGVGcm9tUGF0dGVybihwYXR0ZXJuQnVmZmVyKSkgIT0gc3Bl
Y2lmaWVkSG91cjEyKSB7CisgICAgICAgICAgICAgICAgICAgIFZlY3RvcjxVQ2hhciwgMzI+IHNr
ZWxldG9uOworICAgICAgICAgICAgICAgICAgICBhdXRvIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9k
dWNpbmdGdW5jdGlvbih1ZGF0cGdfZ2V0U2tlbGV0b24sIG51bGxwdHIsIHBhdHRlcm5CdWZmZXIu
ZGF0YSgpLCBwYXR0ZXJuQnVmZmVyLnNpemUoKSwgc2tlbGV0b24pOworICAgICAgICAgICAgICAg
ICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBE
YXRlSW50ZXJ2YWxGb3JtYXQiX3MpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VIb3VyQ3lj
bGVJblNrZWxldG9uKHNrZWxldG9uLCBzcGVjaWZpZWRIb3VyMTIpOworICAgICAgICAgICAgICAg
ICAgICBkYXRhTG9nTG5JZihJbnRsRGF0ZVRpbWVGb3JtYXRJbnRlcm5hbDo6dmVyYm9zZSwgInJl
cGxhY2VkOigiLCBTdHJpbmdWaWV3KHNrZWxldG9uLmRhdGEoKSwgc2tlbGV0b24uc2l6ZSgpKSwg
IikiKTsKKyAgICAgICAgICAgICAgICAgICAgcGF0dGVybkJ1ZmZlci5jbGVhcigpOworICAgICAg
ICAgICAgICAgICAgICBwYXR0ZXJuRnJvbVNrZWxldG9uKHNrZWxldG9uLmRhdGEoKSwgc2tlbGV0
b24uc2l6ZSgpLCBwYXR0ZXJuQnVmZmVyLCBzdGF0dXMpOworICAgICAgICAgICAgICAgICAgICBp
ZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBEYXRlSW50
ZXJ2YWxGb3JtYXQiX3MpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAg
ICB9Ci0KKyAgICB9IGVsc2UgeworICAgICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19F
UlJPUjsKICAgICAgICAgU3RyaW5nIHNrZWxldG9uID0gc2tlbGV0b25CdWlsZGVyLnRvU3RyaW5n
KCk7Ci0gICAgICAgIFN0cmluZ1ZpZXcgc2tlbGV0b25WaWV3KHNrZWxldG9uKTsKLSAgICAgICAg
c3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVkYXRwZ19nZXRCZXN0UGF0dGVy
bldpdGhPcHRpb25zLCBnZW5lcmF0b3IsIHNrZWxldG9uVmlldy51cGNvbnZlcnRlZENoYXJhY3Rl
cnMoKS5nZXQoKSwgc2tlbGV0b25WaWV3Lmxlbmd0aCgpLCBVREFUUEdfTUFUQ0hfSE9VUl9GSUVM
RF9MRU5HVEgsIHBhdHRlcm5CdWZmZXIpOwotICAgICAgICB1ZGF0cGdfY2xvc2UoZ2VuZXJhdG9y
KTsKKyAgICAgICAgcGF0dGVybkZyb21Ta2VsZXRvbihTdHJpbmdWaWV3KHNrZWxldG9uKS51cGNv
bnZlcnRlZENoYXJhY3RlcnMoKS5nZXQoKSwgc2tlbGV0b24ubGVuZ3RoKCksIHBhdHRlcm5CdWZm
ZXIsIHN0YXR1cyk7CiAgICAgICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewogICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFs
aXplIERhdGVUaW1lRm9ybWF0Il9zKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
ICAgIH0KIAotICAgIC8vIEVuZm9yY2Ugb3VyIGhvdXJDeWNsZSwgcmVwbGFjaW5nIGhvdXIgY2hh
cmFjdGVycyBpbiBwYXR0ZXJuLiBJQ1UgY2FuIHBpY2sgZm9ybWF0IHdoaWNoIGRvZXMgbm90IGFn
cmVlIHdpdGggc3BlY2lmaWVkIGhvdXJDeWNsZS4KLSAgICAvLyBUaGlzIHN0ZXAgbW9kaWZpZXMg
Z2VuZXJhdGVkIHBhdHRlcm4gdG8gdXNlIHNwZWNpZmllZCBob3VyQ3ljbGUsIGFuZCBpdCBpcyBz
cGVjaWZpZWQgaW4gMS4xLjEgSW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0IHN0ZXAgMzMuCi0gICAg
Ly8gRklYTUU6IFdlIHNob3VsZCBjYWNoZSBgaG91ckN5Y2xlRGVmYXVsdGAgdmFsdWUgb2J0YWlu
ZWQgYnkgZ2VuZXJhdGluZyAiamptbSIgcGF0dGVybiBmcm9tIFVEYXRlVGltZVBhdHRlcm5HZW5l
cmF0b3IuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
MzQ1OQotICAgIGlmIChjYW5JbmNsdWRlSG91cikgewotICAgICAgICBib29sIGhhc0hvdXIgPSBm
YWxzZTsKLSAgICAgICAgaWYgKCFtX2hvdXJDeWNsZS5pc051bGwoKSB8fCAhaXNIb3VyMTJVbmRl
ZmluZWQpIHsKLSAgICAgICAgICAgIFVDaGFyIGhvdXJGcm9tSG91ckN5Y2xlID0gJ0gnOyAvLyBI
MjMKLSAgICAgICAgICAgIGlmIChtX2hvdXJDeWNsZSA9PSAiaDExIikKLSAgICAgICAgICAgICAg
ICBob3VyRnJvbUhvdXJDeWNsZSA9ICdLJzsKLSAgICAgICAgICAgIGVsc2UgaWYgKG1faG91ckN5
Y2xlID09ICJoMTIiKQotICAgICAgICAgICAgICAgIGhvdXJGcm9tSG91ckN5Y2xlID0gJ2gnOwot
ICAgICAgICAgICAgZWxzZSBpZiAobV9ob3VyQ3ljbGUgPT0gImgyNCIpCi0gICAgICAgICAgICAg
ICAgaG91ckZyb21Ib3VyQ3ljbGUgPSAnayc7Ci0KLSAgICAgICAgICAgIGJvb2wgaXNFc2NhcGVk
ID0gZmFsc2U7Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIGMgOiBwYXR0ZXJuQnVmZmVyKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKGMgPT0gJ1wnJykKLSAgICAgICAgICAgICAgICAgICAgaXNFc2Nh
cGVkID0gIWlzRXNjYXBlZDsKLSAgICAgICAgICAgICAgICBlbHNlIGlmICghaXNFc2NhcGVkICYm
IChjID09ICdoJyB8fCBjID09ICdIJyB8fCBjID09ICdrJyB8fCBjID09ICdLJykpIHsKLSAgICAg
ICAgICAgICAgICAgICAgc3dpdGNoIChjKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgJ0sn
OgotICAgICAgICAgICAgICAgICAgICBjYXNlICdIJzogewotICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGlzSG91cjEyVW5kZWZpbmVkKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMg
PSBob3VyRnJvbUhvdXJDeWNsZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGhv
dXIxMiA9PSBUcmlTdGF0ZTo6VHJ1ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0g
J0snOwotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGMgPSAnSCc7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBjYXNlICdoJzoKLSAgICAgICAgICAg
ICAgICAgICAgY2FzZSAnayc6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0hvdXIx
MlVuZGVmaW5lZCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gaG91ckZyb21Ib3Vy
Q3ljbGU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChob3VyMTIgPT0gVHJpU3Rh
dGU6OlRydWUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9ICdoJzsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gJ2sn
OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgIGhhc0hvdXIgPSB0cnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgICAgICBpZiAoIWhhc0hvdXIpCi0gICAgICAgICAgICBtX2hvdXJDeWNs
ZSA9IFN0cmluZygpOwotICAgIH0KKyAgICAvLyBJbiBza2VsZXRvbiBjb25zdHJ1Y3Rpb24sIHRo
ZXJlIGlzIG5vIHdheSB0byBzcGVjaWZ5IGgxMSB2LnMuIGgxMiwgb3IgaDIzIHYucy4gaDI0Lgor
ICAgIC8vIEFmdGVyIGdlbmVyYXRpbmcgcGF0dGVybiBmcm9tIHNrZWxldG9uLCB3ZSBuZWVkIHRv
IGNoYW5nZSBoMTEgYW5kIGgxMiAvIGgyMyBhbmQgaDI0IGlmIGhvdXJDeWNsZSBpcyBzcGVjaWZp
ZWQuCisgICAgaWYgKGhvdXJDeWNsZSAhPSBIb3VyQ3ljbGU6Ok5vbmUpCisgICAgICAgIHJlcGxh
Y2VIb3VyQ3ljbGVJblBhdHRlcm4ocGF0dGVybkJ1ZmZlciwgaG91ckN5Y2xlKTsKIAogICAgIFN0
cmluZ1ZpZXcgcGF0dGVybihwYXR0ZXJuQnVmZmVyLmRhdGEoKSwgcGF0dGVybkJ1ZmZlci5zaXpl
KCkpOwogICAgIHNldEZvcm1hdHNGcm9tUGF0dGVybihwYXR0ZXJuKTsKQEAgLTg0OCw2ICs5MzAs
MjUgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIHVjYWxfc2V0R3JlZ29yaWFuQ2hhbmdl
KGNhbCwgbWluRUNNQVNjcmlwdFRpbWUsICZzdGF0dXMpOwogfQogCitBU0NJSUxpdGVyYWwgSW50
bERhdGVUaW1lRm9ybWF0Ojpob3VyQ3ljbGVTdHJpbmcoSG91ckN5Y2xlIGhvdXJDeWNsZSkKK3sK
KyAgICBzd2l0Y2ggKGhvdXJDeWNsZSkgeworICAgIGNhc2UgSG91ckN5Y2xlOjpIMTE6CisgICAg
ICAgIHJldHVybiAiaDExIl9zOworICAgIGNhc2UgSG91ckN5Y2xlOjpIMTI6CisgICAgICAgIHJl
dHVybiAiaDEyIl9zOworICAgIGNhc2UgSG91ckN5Y2xlOjpIMjM6CisgICAgICAgIHJldHVybiAi
aDIzIl9zOworICAgIGNhc2UgSG91ckN5Y2xlOjpIMjQ6CisgICAgICAgIHJldHVybiAiaDI0Il9z
OworICAgIGNhc2UgSG91ckN5Y2xlOjpOb25lOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworICAgIH0KKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7Cit9CisK
IEFTQ0lJTGl0ZXJhbCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OndlZWtkYXlTdHJpbmcoV2Vla2RheSB3
ZWVrZGF5KQogewogICAgIHN3aXRjaCAod2Vla2RheSkgewpAQCAtMTA0MCw5ICsxMTQxLDkgQEAg
SlNPYmplY3QqIEludGxEYXRlVGltZUZvcm1hdDo6cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpIGNvbnMKICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPm51bWJlcmluZ1N5c3RlbSwganNOb250cml2aWFsU3RyaW5nKHZtLCBtX251
bWJlcmluZ1N5c3RlbSkpOwogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+dGltZVpvbmUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgbV90aW1lWm9uZSkpOwogCi0g
ICAgaWYgKCFtX2hvdXJDeWNsZS5pc051bGwoKSkgewotICAgICAgICBvcHRpb25zLT5wdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmhvdXJDeWNsZSwganNOb250cml2aWFsU3RyaW5nKHZt
LCBtX2hvdXJDeWNsZSkpOwotICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmhvdXIxMiwganNCb29sZWFuKG1faG91ckN5Y2xlID09ICJoMTEiIHx8IG1faG91
ckN5Y2xlID09ICJoMTIiKSk7CisgICAgaWYgKG1faG91ckN5Y2xlICE9IEhvdXJDeWNsZTo6Tm9u
ZSkgeworICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmhv
dXJDeWNsZSwganNOb250cml2aWFsU3RyaW5nKHZtLCBob3VyQ3ljbGVTdHJpbmcobV9ob3VyQ3lj
bGUpKSk7CisgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
aG91cjEyLCBqc0Jvb2xlYW4obV9ob3VyQ3ljbGUgPT0gSG91ckN5Y2xlOjpIMTEgfHwgbV9ob3Vy
Q3ljbGUgPT0gSG91ckN5Y2xlOjpIMTIpKTsKICAgICB9CiAKICAgICBpZiAobV93ZWVrZGF5ICE9
IFdlZWtkYXk6Ok5vbmUpCkBAIC0xMjY3LDggKzEzNjgsOCBAQCBVRGF0ZUludGVydmFsRm9ybWF0
KiBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmNyZWF0ZURhdGVJbnRlcnZhbEZvcm1hdElmTmVjZXNzYXJ5
KEpTRwogICAgIC8vIFdlIG5lZWQgdG8gZW5mb3JjZSBIb3VyQ3ljbGUgYnkgc2V0dGluZyAiaGMi
IGV4dGVuc2lvbiBpZiBpdCBpcyBzcGVjaWZpZWQuCiAgICAgU3RyaW5nQnVpbGRlciBsb2NhbGVC
dWlsZGVyOwogICAgIGxvY2FsZUJ1aWxkZXIuYXBwZW5kKG1fZGF0YUxvY2FsZSwgIi11LWNhLSIs
IG1fY2FsZW5kYXIsICItbnUtIiwgbV9udW1iZXJpbmdTeXN0ZW0pOwotICAgIGlmICghbV9ob3Vy
Q3ljbGUuaXNOdWxsKCkpCi0gICAgICAgIGxvY2FsZUJ1aWxkZXIuYXBwZW5kKCItaGMtIiwgbV9o
b3VyQ3ljbGUpOworICAgIGlmIChtX2hvdXJDeWNsZSAhPSBIb3VyQ3ljbGU6Ok5vbmUpCisgICAg
ICAgIGxvY2FsZUJ1aWxkZXIuYXBwZW5kKCItaGMtIiwgaG91ckN5Y2xlU3RyaW5nKG1faG91ckN5
Y2xlKSk7CiAgICAgQ1N0cmluZyBkYXRhTG9jYWxlV2l0aEV4dGVuc2lvbnMgPSBsb2NhbGVCdWls
ZGVyLnRvU3RyaW5nKCkudXRmOCgpOwogCiAgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9f
RVJST1I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0
ZVRpbWVGb3JtYXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGlt
ZUZvcm1hdC5oCmluZGV4IDBiZGEyNTk4OTBlZDAzZjMxZWYyZjA1ZGE4MTY1Yzc0MmZmMzUzMjcu
LmU3NjM1MmI2Yzc1ZjFkMTJjMGUyZWZmYWZiODRkZGI1NDQ5ZjEzMmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5oCkBAIC03OCw2
ICs3OCw3IEBAIGNsYXNzIEludGxEYXRlVGltZUZvcm1hdCBmaW5hbCA6IHB1YmxpYyBKU05vbkZp
bmFsT2JqZWN0IHsKIAogICAgIFVEYXRlSW50ZXJ2YWxGb3JtYXQqIGNyZWF0ZURhdGVJbnRlcnZh
bEZvcm1hdElmTmVjZXNzYXJ5KEpTR2xvYmFsT2JqZWN0Kik7CiAKKyAgICBlbnVtIGNsYXNzIEhv
dXJDeWNsZSA6IHVpbnQ4X3QgeyBOb25lLCBIMTEsIEgxMiwgSDIzLCBIMjQgfTsKICAgICBlbnVt
IGNsYXNzIFdlZWtkYXkgOiB1aW50OF90IHsgTm9uZSwgTmFycm93LCBTaG9ydCwgTG9uZyB9Owog
ICAgIGVudW0gY2xhc3MgRXJhIDogdWludDhfdCB7IE5vbmUsIE5hcnJvdywgU2hvcnQsIExvbmcg
fTsKICAgICBlbnVtIGNsYXNzIFllYXIgOiB1aW50OF90IHsgTm9uZSwgVHdvRGlnaXQsIE51bWVy
aWMgfTsKQEAgLTkxLDYgKzkyLDcgQEAgY2xhc3MgSW50bERhdGVUaW1lRm9ybWF0IGZpbmFsIDog
cHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIGVudW0gY2xhc3MgRGF0ZVRpbWVTdHlsZSA6
IHVpbnQ4X3QgeyBOb25lLCBGdWxsLCBMb25nLCBNZWRpdW0sIFNob3J0IH07CiAKICAgICB2b2lk
IHNldEZvcm1hdHNGcm9tUGF0dGVybihjb25zdCBTdHJpbmdWaWV3Jik7CisgICAgc3RhdGljIEFT
Q0lJTGl0ZXJhbCBob3VyQ3ljbGVTdHJpbmcoSG91ckN5Y2xlKTsKICAgICBzdGF0aWMgQVNDSUlM
aXRlcmFsIHdlZWtkYXlTdHJpbmcoV2Vla2RheSk7CiAgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBl
cmFTdHJpbmcoRXJhKTsKICAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHllYXJTdHJpbmcoWWVhcik7
CkBAIC0xMDMsNiArMTA1LDExIEBAIGNsYXNzIEludGxEYXRlVGltZUZvcm1hdCBmaW5hbCA6IHB1
YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHRpbWVab25l
TmFtZVN0cmluZyhUaW1lWm9uZU5hbWUpOwogICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgZm9ybWF0
U3R5bGVTdHJpbmcoRGF0ZVRpbWVTdHlsZSk7CiAKKyAgICBzdGF0aWMgSG91ckN5Y2xlIHBhcnNl
SG91ckN5Y2xlKGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRpYyBIb3VyQ3ljbGUgaG91ckN5Y2xl
RnJvbVBhdHRlcm4oY29uc3QgVmVjdG9yPFVDaGFyLCAzMj4mKTsKKyAgICBzdGF0aWMgdm9pZCBy
ZXBsYWNlSG91ckN5Y2xlSW5Ta2VsZXRvbihWZWN0b3I8VUNoYXIsIDMyPiYsIGJvb2wgaG91cjEy
KTsKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlSG91ckN5Y2xlSW5QYXR0ZXJuKFZlY3RvcjxVQ2hh
ciwgMzI+JiwgSG91ckN5Y2xlKTsKKwogICAgIHVzaW5nIFVEYXRlRm9ybWF0RGVsZXRlciA9IElD
VURlbGV0ZXI8dWRhdF9jbG9zZT47CiAgICAgdXNpbmcgVURhdGVJbnRlcnZhbEZvcm1hdERlbGV0
ZXIgPSBJQ1VEZWxldGVyPHVkdGl0dmZtdF9jbG9zZT47CiAKQEAgLTExNSw3ICsxMjIsNyBAQCBj
bGFzcyBJbnRsRGF0ZVRpbWVGb3JtYXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7
CiAgICAgU3RyaW5nIG1fY2FsZW5kYXI7CiAgICAgU3RyaW5nIG1fbnVtYmVyaW5nU3lzdGVtOwog
ICAgIFN0cmluZyBtX3RpbWVab25lOwotICAgIFN0cmluZyBtX2hvdXJDeWNsZTsKKyAgICBIb3Vy
Q3ljbGUgbV9ob3VyQ3ljbGUgeyBIb3VyQ3ljbGU6Ok5vbmUgfTsKICAgICBXZWVrZGF5IG1fd2Vl
a2RheSB7IFdlZWtkYXk6Ok5vbmUgfTsKICAgICBFcmEgbV9lcmEgeyBFcmE6Ok5vbmUgfTsKICAg
ICBZZWFyIG1feWVhciB7IFllYXI6Ok5vbmUgfTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdl
TG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOTgzMDEyMmZjY2NkYWM4NmJlMmY5MDhlNDVj
YjAwODY3MDViYWMzMC4uMGVmOGFjZThjZTdmNjA3ZWZlYmJjODY5OTQ5OTUyZTg4MTg3MzgxYiAx
MDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMyBAQAorMjAyMC0wOS0xNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUu
Y29tPgorCisgICAgICAgIFtKU0NdIEFwcGx5IEludGwuRGF0ZVRpbWVGb3JtYXQgaG91ci1jeWNs
ZSBjb3JyZWN0bHkgd2hlbiB0aW1lU3R5bGUgaXMgdXNlZAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2NTIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvaW50bC1kYXRldGltZWZvcm1hdC5q
czoKKyAgICAgICAgKiB0ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sOgorCiAyMDIwLTA5LTExICBZ
dXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gQ2Fub25p
Y2FsaXplICJ0cnVlIiB1bmljb2RlIGV4dGVuc2lvbiB0eXBlIHZhbHVlIHRvICIiCmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLWRhdGV0aW1lZm9ybWF0LmpzIGIvSlNUZXN0cy9zdHJl
c3MvaW50bC1kYXRldGltZWZvcm1hdC5qcwppbmRleCAwNjFmNzk3NzIwMjYxOTg5YTYwOWRlMGE5
ZDdlMmFhZTIxNmI1YTQxLi45ZmZiN2I3NGNhNTcyNDliZDM1MDAyY2IwMzhkMWU5ZjIxZmE2ZjU2
IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLWRhdGV0aW1lZm9ybWF0LmpzCisrKyBi
L0pTVGVzdHMvc3RyZXNzL2ludGwtZGF0ZXRpbWVmb3JtYXQuanMKQEAgLTc0OCwzICs3NDgsMTAg
QEAgZ2V0IGZvcm1hdE1hdGNoZXIoKSB7CiB7CiAgICAgc2hvdWxkQmUobmV3IERhdGUoMCkudG9M
b2NhbGVUaW1lU3RyaW5nKCd6aC1IYW5zLUNOJywgeyB0aW1lWm9uZTogJ1VUQycsIG51bWJlcmlu
Z1N5c3RlbTogJ2hhbmlkZWMnLCBob3VyOiAibnVtZXJpYyIsIG1pbnV0ZTogIm51bWVyaWMiLCBz
ZWNvbmQ6ICJudW1lcmljIiwgZnJhY3Rpb25hbFNlY29uZERpZ2l0czogMiB9KSwgIuS4iuWNiOS4
gOS6jDrjgIfjgIc644CH44CHLuOAh+OAhyIpOwogfQoreworICAgIGxldCBvcHRpb25zID0gbmV3
IEludGwuRGF0ZVRpbWVGb3JtYXQoYGRlLXUtaGMtaDExYCwgeworICAgICAgICBkYXRlU3R5bGU6
ICJzaG9ydCIKKyAgICB9KS5yZXNvbHZlZE9wdGlvbnMoKTsKKyAgICBzaG91bGRCZShvcHRpb25z
LmhvdXJDeWNsZSwgdW5kZWZpbmVkKTsKKyAgICBzaG91bGRCZShvcHRpb25zLmhvdXIxMiwgdW5k
ZWZpbmVkKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFt
bCBiL0pTVGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbAppbmRleCA5OTUwMzg5YjA2Mjg1
YjE4NzVlM2MzNTExZTYxZTJjMjA4MzZiYWMwLi40NzhmMjQyNTUwYzc3NThhNDU2NGMzYmE5MTlj
NGMyNTY5NWQxNjg3IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlh
bWwKKysrIGIvSlNUZXN0cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sCkBAIC0xNDUzLDggKzE0
NTMsOCBAQCB0ZXN0L2J1aWx0LWlucy9UeXBlZEFycmF5Q29uc3RydWN0b3JzL29mL25ldy1pbnN0
YW5jZS11c2luZy1jdXN0b20tY3Rvci5qczoKICAgZGVmYXVsdDogJ1R5cGVFcnJvcjogVHlwZWRB
cnJheS5vZiByZXF1aXJlcyBpdHMgdGhpcyBhcmd1bWVudCB0byBzdWJjbGFzcyBhIFR5cGVkQXJy
YXkgY29uc3RydWN0b3IgKFRlc3Rpbmcgd2l0aCBGbG9hdDY0QXJyYXkuKScKICAgc3RyaWN0IG1v
ZGU6ICdUeXBlRXJyb3I6IFR5cGVkQXJyYXkub2YgcmVxdWlyZXMgaXRzIHRoaXMgYXJndW1lbnQg
dG8gc3ViY2xhc3MgYSBUeXBlZEFycmF5IGNvbnN0cnVjdG9yIChUZXN0aW5nIHdpdGggRmxvYXQ2
NEFycmF5LiknCiB0ZXN0L2ludGw0MDIvRGF0ZVRpbWVGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdC90
aW1lZGF0ZXN0eWxlLWVuLmpzOgotICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBSZXN1bHQgZm9y
IGZ1bGwgd2l0aCB7fSBFeHBlY3RlZCBTYW1lVmFsdWUowqsxNDoxMjo0NyBQTSBDb29yZGluYXRl
ZCBVbml2ZXJzYWwgVGltZcK7LCDCqzE0OjEyOjQ3IENvb3JkaW5hdGVkIFVuaXZlcnNhbCBUaW1l
wrspIHRvIGJlIHRydWUnCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBSZXN1bHQgZm9y
IGZ1bGwgd2l0aCB7fSBFeHBlY3RlZCBTYW1lVmFsdWUowqsxNDoxMjo0NyBQTSBDb29yZGluYXRl
ZCBVbml2ZXJzYWwgVGltZcK7LCDCqzE0OjEyOjQ3IENvb3JkaW5hdGVkIFVuaXZlcnNhbCBUaW1l
wrspIHRvIGJlIHRydWUnCisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IFJlc3VsdCBmb3IgZGF0
ZT1tZWRpdW0gYW5kIHRpbWU9ZnVsbCBFeHBlY3RlZCBTYW1lVmFsdWUowqtNYXkgMSwgMTg4NiBh
dCAyOjEyOjQ3IFBNIENvb3JkaW5hdGVkIFVuaXZlcnNhbCBUaW1lwrssIMKrTWF5IDEsIDE4ODYs
IDI6MTI6NDcgUE0gQ29vcmRpbmF0ZWQgVW5pdmVyc2FsIFRpbWXCuykgdG8gYmUgdHJ1ZScKKyAg
c3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IFJlc3VsdCBmb3IgZGF0ZT1tZWRpdW0gYW5kIHRp
bWU9ZnVsbCBFeHBlY3RlZCBTYW1lVmFsdWUowqtNYXkgMSwgMTg4NiBhdCAyOjEyOjQ3IFBNIENv
b3JkaW5hdGVkIFVuaXZlcnNhbCBUaW1lwrssIMKrTWF5IDEsIDE4ODYsIDI6MTI6NDcgUE0gQ29v
cmRpbmF0ZWQgVW5pdmVyc2FsIFRpbWXCuykgdG8gYmUgdHJ1ZScKIHRlc3QvaW50bDQwMi9EYXRl
VGltZUZvcm1hdC9wcm90b3R5cGUvZm9ybWF0UmFuZ2UvZW4tVVMuanM6CiAgIGRlZmF1bHQ6ICdU
ZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzEvMy8yMDE54oCJ4oCT4oCJMS81LzIw
MTnCuywgwqsxLzMvMjAxOSDigJMgMS81LzIwMTnCuykgdG8gYmUgdHJ1ZScKICAgc3RyaWN0IG1v
ZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzEvMy8yMDE54oCJ4oCT4oCJ
MS81LzIwMTnCuywgwqsxLzMvMjAxOSDigJMgMS81LzIwMTnCuykgdG8gYmUgdHJ1ZScK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408791</attachid>
            <date>2020-09-14 22:11:39 -0700</date>
            <delta_ts>2020-09-14 22:30:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216521-20200914221139.patch</filename>
            <type>text/plain</type>
            <size>32865</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3MDA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
YjgwMjg1NDg2Njc0ZWViOTI2MDIyMTQzYjUzMmUwYjA0Nzk0OWVhLi45ODYyM2MzMTY4ODAwMTk4
OGFkY2NlZmRhYzAyZmYzMzE3OTc2MDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOCBAQAorMjAyMC0wOS0xNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEFwcGx5IEludGwuRGF0ZVRpbWVGb3JtYXQgaG91ci1jeWNsZSBj
b3JyZWN0bHkgd2hlbiB0aW1lU3R5bGUgaXMgdXNlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2NTIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBzcGVjaWZ5aW5nIHRpbWVTdHlsZSBpbiBJbnRs
LkRhdGVUaW1lRm9ybWF0LCB3ZSBuZWVkIHRvIGNoZWNrIHRoYXQgdGhlIGdlbmVyYXRlZCBmb3Jt
YXQgYWxzbyBmb2xsb3dzIHRvIHRoZSBob3VyQ3ljbGUgLyBob3VyMTIgb3B0aW9ucworICAgICAg
ICBzcGVjaWZpZWQgaW4gdGhlIGNvbnN0cnVjdG9yLiBCZWNhdXNlIGRheVBlcmlvZCBjYW4gYmUg
aW5jbHVkZWQgYXV0b21hdGljYWxseSwganVzdCByZXBsYWNpbmcgc3ltYm9scyBhZnRlciBnZW5l
cmF0aW5nIGEgcGF0dGVybiBjYW4gZHVtcCBzdHJhbmdlIHJlc3VsdC4KKyAgICAgICAgRm9yIGV4
YW1wbGUsIHRoZSBnZW5lcmF0ZWQgb25lIGlzIHNvbWV0aGluZyBsaWtlICIwMjoxMjo0NyBQTSBD
b29yZGluYXRlZCBVbml2ZXJzYWwgVGltZSIuIEFuZCB3ZSBhZGp1c3QgdGhlIHBhdHRlcm4gdG8g
bWFrZSBpdCAiMTQ6MTI6NDcgUE0gQ29vcmRpbmF0ZWQgVW5pdmVyc2FsIFRpbWUiCisgICAgICAg
IHdoZW4gaG91ckN5Y2xlIEgyMyAvIEgyNCBpcyBzcGVjaWZpZWQuIEJ1dCB0aGlzIGxvb2tzIHN0
cmFuZ2Ugc2luY2UgZGF5UGVyaW9kICJQTSIgc2hvdWxkIG5vdCBleGlzdCB3aGVuIHVzaW5nIEgy
MyAvIEgyNC4KKworICAgICAgICBJbiB0aGlzIHBhdGNoLCB3ZSByZXZpc2Ugb3VyIGhvdXItY3lj
bGUgaGFuZGxpbmcgaW4gSW50bC5EYXRlVGltZUZvcm1hdC4gV2UgYWxpZ24gb3VyIGJlaGF2aW9y
IHRvIFNwaWRlck1vbmtleSdzIG9uZVsxXSByYXRoZXIgdGhhbiB0aGUgc3BlYydzIG9uZTogd2hl
biBob3VyMTIgaXMgc3BlY2lmaWVkLAorICAgICAgICB3ZSB3aWxsIGp1c3QgdXNlICdIJyBvciAn
aCcgc2tlbGV0b24gYW5kIGRvIG5vdCBlbmZvcmNlIGhvdXItY3ljbGUgYWZ0ZXIgZ2VuZXJhdGlu
ZyBwYXR0ZXJuIGluIGhvdXIxMiBjYXNlLiBJZiBob3VyMTIgaXMgbm90IHNwZWNpZmllZCwgdGhl
biB3ZSB1c2UgJ2gnIG9yICdIJyBza2VsZXRvbgorICAgICAgICBzeW1ib2xzIGJhc2VkIG9uIGhv
dXItY3ljbGUsIGFuZCBsYXRlciB3ZSBtb2RpZnkgdGhlIHBhdHRlcm4gYmFzZWQgb24gaG91ci1j
eWNsZS4gSWYgYm90aCBhcmUgbm90IG9mZmVyZWQsIHdlIHVzZSAnaicgd2hpY2ggYWxsb3dzIElD
VSB0byBwaWNrIHByZWZlcmFibGUgb25lLgorICAgICAgICBUaGlzIGlzIHNsaWdodGx5IGRpZmZl
cmVudCBiZWhhdmlvciB0byB0aGUgc3BlYyAoaGNEZWZhdWx0IGV0Yy4pIGJ1dCB0aGUgc3BlYydz
IGJlaGF2aW9yIGNhbiBjYXVzZSBhIGJpdCBzdXJwcmlzaW5nIHJlc3VsdFsyLDNdLCBhbmQgU3Bp
ZGVyTW9ua2V5IGxpa2UgYmVoYXZpb3Igd2lsbCBiZQorICAgICAgICBpbnRlZ3JhdGVkIGludG8g
dGhlIHNwZWMgZXZlbnR1YWxseVs0XS4KKworICAgICAgICBbMV06IGh0dHBzOi8vZ2l0aHViLmNv
bS90YzM5L2VjbWE0MDIvaXNzdWVzLzQwMiNpc3N1ZWNvbW1lbnQtNjIzNjI4MzIwCisgICAgICAg
IFsyXTogaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvZWNtYTQwMi9pc3N1ZXMvNDAyCisgICAgICAg
IFszXTogaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/
aWQ9MTA0NTc5MQorICAgICAgICBbNF06IGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L2VjbWE0MDIv
cHVsbC80MzYKKworICAgICAgICAqIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcDoKKyAg
ICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0OjpzZXRGb3JtYXRzRnJvbVBhdHRlcm4pOgor
ICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OnBhcnNlSG91ckN5Y2xlKToKKyAgICAg
ICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0Ojpob3VyQ3ljbGVGcm9tUGF0dGVybik6CisgICAg
ICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdDo6cmVwbGFjZUhvdXJDeWNsZUluU2tlbGV0b24p
OgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OnJlcGxhY2VIb3VyQ3ljbGVJblBh
dHRlcm4pOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRl
VGltZUZvcm1hdCk6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdDo6aG91ckN5Y2xl
U3RyaW5nKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0OjpyZXNvbHZlZE9wdGlv
bnMgY29uc3QpOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OmNyZWF0ZURhdGVJ
bnRlcnZhbEZvcm1hdElmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGlt
ZUZvcm1hdC5oOgorCiAyMDIwLTA5LTExICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5j
b20+CiAKICAgICAgICAgW0pTQ10gQ2Fub25pY2FsaXplICJ0cnVlIiB1bmljb2RlIGV4dGVuc2lv
biB0eXBlIHZhbHVlIHRvICIiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcAppbmRleCAyOTc2NDU5ZTE1ZmJhZjMzZTFhYTVlYTI1
NDg4NGRiODhmYmU2OTE0Li40NGM2YTQ0NzViODRlZTI4YjZlMDM0YjY0YjY3YzAxYjRhNzhiNDgy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVG
b3JtYXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGlt
ZUZvcm1hdC5jcHAKQEAgLTMyOSwxOCArMzI5LDYgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6
OnNldEZvcm1hdHNGcm9tUGF0dGVybihjb25zdCBTdHJpbmdWaWV3JiBwYXR0ZXJuKQogICAgICAg
ICAgICAgKytpOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gSWYgaG91ckN5Y2xlIHdhcyBudWxs
LCB0aGlzIHNldHMgaXQgdG8gdGhlIGxvY2FsZSBkZWZhdWx0LgotICAgICAgICBpZiAobV9ob3Vy
Q3ljbGUuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIGlmIChjdXJyZW50Q2hhcmFjdGVyID09ICdo
JykKLSAgICAgICAgICAgICAgICBtX2hvdXJDeWNsZSA9ICJoMTIiX3M7Ci0gICAgICAgICAgICBl
bHNlIGlmIChjdXJyZW50Q2hhcmFjdGVyID09ICdIJykKLSAgICAgICAgICAgICAgICBtX2hvdXJD
eWNsZSA9ICJoMjMiX3M7Ci0gICAgICAgICAgICBlbHNlIGlmIChjdXJyZW50Q2hhcmFjdGVyID09
ICdrJykKLSAgICAgICAgICAgICAgICBtX2hvdXJDeWNsZSA9ICJoMjQiX3M7Ci0gICAgICAgICAg
ICBlbHNlIGlmIChjdXJyZW50Q2hhcmFjdGVyID09ICdLJykKLSAgICAgICAgICAgICAgICBtX2hv
dXJDeWNsZSA9ICJoMTEiX3M7Ci0gICAgICAgIH0KLQogICAgICAgICBzd2l0Y2ggKGN1cnJlbnRD
aGFyYWN0ZXIpIHsKICAgICAgICAgY2FzZSAnRyc6CiAgICAgICAgICAgICBpZiAoY291bnQgPD0g
MykKQEAgLTM5OCwxMiArMzg2LDM0IEBAIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0OjpzZXRGb3Jt
YXRzRnJvbVBhdHRlcm4oY29uc3QgU3RyaW5nVmlldyYgcGF0dGVybikKICAgICAgICAgY2FzZSAn
aCc6CiAgICAgICAgIGNhc2UgJ0gnOgogICAgICAgICBjYXNlICdrJzoKLSAgICAgICAgY2FzZSAn
Syc6CisgICAgICAgIGNhc2UgJ0snOiB7CisgICAgICAgICAgICAvLyBQb3B1bGF0ZSBob3VyQ3lj
bGUgZnJvbSBhY3R1YWxseSBnZW5lcmF0ZWQgcGF0dGVybnMuIEl0IGlzIHBvc3NpYmxlIHRoYXQg
bG9jYWxlIG9yIG9wdGlvbiBpcyBzcGVjaWZ5aW5nIGhvdXJDeWNsZSBleHBsaWNpdGx5LAorICAg
ICAgICAgICAgLy8gYnV0IHRoZSBnZW5lcmF0ZWQgcGF0dGVybiBkb2VzIG5vdCBpbmNsdWRlIHJl
bGF0ZWQgcGFydCBzaW5jZSB0aGUgcGF0dGVybiBkb2VzIG5vdCBpbmNsdWRlIGhvdXJzLgorICAg
ICAgICAgICAgLy8gVGhpcyBpcyB0ZXN0ZWQgaW4gdGVzdDI2Mi90ZXN0L2ludGw0MDIvRGF0ZVRp
bWVGb3JtYXQvcHJvdG90eXBlL3Jlc29sdmVkT3B0aW9ucy9ob3VyQ3ljbGUtZGF0ZVN0eWxlLmpz
IGFuZCBvdXIgc3RyZXNzIHRlc3RzLgorICAgICAgICAgICAgLy8gRXhhbXBsZToKKyAgICAgICAg
ICAgIC8vICAgICBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChgZGUtdS1oYy1oMTFgLCB7CisgICAg
ICAgICAgICAvLyAgICAgICAgIGRhdGVTdHlsZTogImZ1bGwiCisgICAgICAgICAgICAvLyAgICAg
fSkucmVzb2x2ZWRPcHRpb25zKCkuaG91ckN5Y2xlID09PSB1bmRlZmluZWQKKyAgICAgICAgICAg
IHN3aXRjaCAoY3VycmVudENoYXJhY3RlcikgeworICAgICAgICAgICAgY2FzZSAnaCc6CisgICAg
ICAgICAgICAgICAgbV9ob3VyQ3ljbGUgPSBIb3VyQ3ljbGU6OkgxMjsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJ0gnOgorICAgICAgICAgICAgICAgIG1faG91ckN5
Y2xlID0gSG91ckN5Y2xlOjpIMjM7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlICdrJzoKKyAgICAgICAgICAgICAgICBtX2hvdXJDeWNsZSA9IEhvdXJDeWNsZTo6SDI0
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAnSyc6CisgICAgICAg
ICAgICAgICAgbV9ob3VyQ3ljbGUgPSBIb3VyQ3ljbGU6OkgxMTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChjb3VudCA9PSAxKQogICAgICAg
ICAgICAgICAgIG1faG91ciA9IEhvdXI6Ok51bWVyaWM7CiAgICAgICAgICAgICBlbHNlIGlmIChj
b3VudCA9PSAyKQogICAgICAgICAgICAgICAgIG1faG91ciA9IEhvdXI6OlR3b0RpZ2l0OwogICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSAnbSc6CiAgICAgICAgICAg
ICBpZiAoY291bnQgPT0gMSkKICAgICAgICAgICAgICAgICBtX21pbnV0ZSA9IE1pbnV0ZTo6TnVt
ZXJpYzsKQEAgLTQzMSw2ICs0NDEsODQgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OnNldEZv
cm1hdHNGcm9tUGF0dGVybihjb25zdCBTdHJpbmdWaWV3JiBwYXR0ZXJuKQogICAgIH0KIH0KIAor
SW50bERhdGVUaW1lRm9ybWF0OjpIb3VyQ3ljbGUgSW50bERhdGVUaW1lRm9ybWF0OjpwYXJzZUhv
dXJDeWNsZShjb25zdCBTdHJpbmcmIGhvdXJDeWNsZSkKK3sKKyAgICBpZiAoaG91ckN5Y2xlID09
ICJoMTEiX3MpCisgICAgICAgIHJldHVybiBIb3VyQ3ljbGU6OkgxMTsKKyAgICBpZiAoaG91ckN5
Y2xlID09ICJoMTIiX3MpCisgICAgICAgIHJldHVybiBIb3VyQ3ljbGU6OkgxMjsKKyAgICBpZiAo
aG91ckN5Y2xlID09ICJoMjMiX3MpCisgICAgICAgIHJldHVybiBIb3VyQ3ljbGU6OkgyMzsKKyAg
ICBpZiAoaG91ckN5Y2xlID09ICJoMjQiX3MpCisgICAgICAgIHJldHVybiBIb3VyQ3ljbGU6Okgy
NDsKKyAgICByZXR1cm4gSG91ckN5Y2xlOjpOb25lOworfQorCitJbnRsRGF0ZVRpbWVGb3JtYXQ6
OkhvdXJDeWNsZSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmhvdXJDeWNsZUZyb21QYXR0ZXJuKGNvbnN0
IFZlY3RvcjxVQ2hhciwgMzI+JiBwYXR0ZXJuKQoreworICAgIGZvciAoYXV0byBjaGFyYWN0ZXIg
OiBwYXR0ZXJuKSB7CisgICAgICAgIHN3aXRjaCAoY2hhcmFjdGVyKSB7CisgICAgICAgIGNhc2Ug
J0snOgorICAgICAgICAgICAgcmV0dXJuIEhvdXJDeWNsZTo6SDExOworICAgICAgICBjYXNlICdo
JzoKKyAgICAgICAgICAgIHJldHVybiBIb3VyQ3ljbGU6OkgxMjsKKyAgICAgICAgY2FzZSAnSCc6
CisgICAgICAgICAgICByZXR1cm4gSG91ckN5Y2xlOjpIMjM7CisgICAgICAgIGNhc2UgJ2snOgor
ICAgICAgICAgICAgcmV0dXJuIEhvdXJDeWNsZTo6SDI0OworICAgICAgICB9CisgICAgfQorICAg
IHJldHVybiBIb3VyQ3ljbGU6Ok5vbmU7Cit9CisKK3ZvaWQgSW50bERhdGVUaW1lRm9ybWF0Ojpy
ZXBsYWNlSG91ckN5Y2xlSW5Ta2VsZXRvbihWZWN0b3I8VUNoYXIsIDMyPiYgc2tlbGV0b24sIGJv
b2wgaXNIb3VyMTIpCit7CisgICAgVUNoYXIgc2tlbGV0b25DaGFyYWN0ZXIgPSAnSCc7CisgICAg
aWYgKGlzSG91cjEyKQorICAgICAgICBza2VsZXRvbkNoYXJhY3RlciA9ICdoJzsKKyAgICBmb3Ig
KGF1dG8mIGNoYXJhY3RlciA6IHNrZWxldG9uKSB7CisgICAgICAgIHN3aXRjaCAoY2hhcmFjdGVy
KSB7CisgICAgICAgIGNhc2UgJ2gnOgorICAgICAgICBjYXNlICdIJzoKKyAgICAgICAgY2FzZSAn
aic6CisgICAgICAgICAgICBjaGFyYWN0ZXIgPSBza2VsZXRvbkNoYXJhY3RlcjsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIEludGxEYXRlVGltZUZvcm1h
dDo6cmVwbGFjZUhvdXJDeWNsZUluUGF0dGVybihWZWN0b3I8VUNoYXIsIDMyPiYgcGF0dGVybiwg
SG91ckN5Y2xlIGhvdXJDeWNsZSkKK3sKKyAgICBVQ2hhciBob3VyRnJvbUhvdXJDeWNsZSA9ICdI
JzsKKyAgICBzd2l0Y2ggKGhvdXJDeWNsZSkgeworICAgIGNhc2UgSG91ckN5Y2xlOjpIMTE6Cisg
ICAgICAgIGhvdXJGcm9tSG91ckN5Y2xlID0gJ0snOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEhvdXJDeWNsZTo6SDEyOgorICAgICAgICBob3VyRnJvbUhvdXJDeWNsZSA9ICdoJzsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBIb3VyQ3ljbGU6OkgyMzoKKyAgICAgICAgaG91ckZyb21Ib3Vy
Q3ljbGUgPSAnSCc7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSG91ckN5Y2xlOjpIMjQ6Cisg
ICAgICAgIGhvdXJGcm9tSG91ckN5Y2xlID0gJ2snOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEhvdXJDeWNsZTo6Tm9uZToKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGZvciAoYXV0
byYgY2hhcmFjdGVyIDogcGF0dGVybikgeworICAgICAgICBzd2l0Y2ggKGNoYXJhY3Rlcikgewor
ICAgICAgICBjYXNlICdLJzoKKyAgICAgICAgY2FzZSAnaCc6CisgICAgICAgIGNhc2UgJ0gnOgor
ICAgICAgICBjYXNlICdrJzoKKyAgICAgICAgICAgIGNoYXJhY3RlciA9IGhvdXJGcm9tSG91ckN5
Y2xlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cit9CisKIC8vIGh0dHBz
Oi8vdGMzOS5naXRodWIuaW8vZWNtYTQwMi8jc2VjLWluaXRpYWxpemVkYXRldGltZWZvcm1hdAog
dm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGxvY2FsZXMsIEpTVmFsdWUgb3JpZ2luYWxP
cHRpb25zKQogewpAQCAtNDcwLDE3ICs1NTgsMjAgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6
OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAog
CiAgICAgVHJpU3RhdGUgaG91cjEyID0gaW50bEJvb2xlYW5PcHRpb24oZ2xvYmFsT2JqZWN0LCBv
cHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5ob3VyMTIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgYm9vbCBpc0hvdXIxMlVuZGVmaW5lZCA9IChob3VyMTIg
PT0gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGUpOwogCi0gICAgU3RyaW5nIGhvdXJDeWNsZSA9IGlu
dGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5o
b3VyQ3ljbGUsIHsgImgxMSIsICJoMTIiLCAiaDIzIiwgImgyNCIgfSwgImhvdXJDeWNsZSBtdXN0
IGJlIFwiaDExXCIsIFwiaDEyXCIsIFwiaDIzXCIsIG9yIFwiaDI0XCIiLCBudWxscHRyKTsKKyAg
ICBIb3VyQ3ljbGUgaG91ckN5Y2xlID0gaW50bE9wdGlvbjxIb3VyQ3ljbGU+KGdsb2JhbE9iamVj
dCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+aG91ckN5Y2xlLCB7IHsgImgxMSJfcywgSG91
ckN5Y2xlOjpIMTEgfSwgeyAiaDEyIl9zLCBIb3VyQ3ljbGU6OkgxMiB9LCB7ICJoMjMiX3MsIEhv
dXJDeWNsZTo6SDIzIH0sIHsgImgyNCJfcywgSG91ckN5Y2xlOjpIMjQgfSB9LCAiaG91ckN5Y2xl
IG11c3QgYmUgXCJoMTFcIiwgXCJoMTJcIiwgXCJoMjNcIiwgb3IgXCJoMjRcIiJfcywgSG91ckN5
Y2xlOjpOb25lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAg
IGlmIChpc0hvdXIxMlVuZGVmaW5lZCkgewotICAgICAgICAvLyBTZXQgaG91cjEyIGhlcmUgdG8g
c2ltcGxpZnkgaG91ciBsb2dpYyBsYXRlci4KLSAgICAgICAgaG91cjEyID0gdHJpU3RhdGUoaG91
ckN5Y2xlID09ICJoMTEiIHx8IGhvdXJDeWNsZSA9PSAiaDEyIik7Ci0gICAgICAgIGlmICghaG91
ckN5Y2xlLmlzTnVsbCgpKQotICAgICAgICAgICAgbG9jYWxlT3B0aW9uc1tzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oUmVsZXZhbnRFeHRlbnNpb25LZXk6OkhjKV0gPSBob3VyQ3ljbGU7Ci0gICAgfSBl
bHNlCisgICAgaWYgKGhvdXIxMiA9PSBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZSkgeworICAgICAg
ICBpZiAoaG91ckN5Y2xlICE9IEhvdXJDeWNsZTo6Tm9uZSkKKyAgICAgICAgICAgIGxvY2FsZU9w
dGlvbnNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJlbGV2YW50RXh0ZW5zaW9uS2V5OjpIYyldID0g
U3RyaW5nKGhvdXJDeWNsZVN0cmluZyhob3VyQ3ljbGUpKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICAvLyBJZiB0aGVyZSBpcyBob3VyMTIsIGhvdXJDeWNsZSBpcyBpZ25vcmVkLgorICAgICAgICAv
LyBXZSBhcmUgc2V0dGluZyBudWxsIFN0cmluZyBleHBsaWNpdGx5IGhlcmUgKGxvY2FsZU9wdGlv
bnMnIGVudHJpZXMgYXJlIE9wdGlvbmFsPFN0cmluZz4pLiBUaGlzIGxlYWRzIHVzIHRvIHVzZSBI
b3VyQ3ljbGU6Ok5vbmUgbGF0ZXIuCisgICAgICAgIC8vCisgICAgICAgIC8vIDE0LiBJZiBob3Vy
MTIgaXMgbm90IHVuZGVmaW5lZCwgdGhlbgorICAgICAgICAvLyAgICAgYS4gTGV0IGhvdXJDeWNs
ZSBiZSBudWxsLgogICAgICAgICBsb2NhbGVPcHRpb25zW3N0YXRpY19jYXN0PHVuc2lnbmVkPihS
ZWxldmFudEV4dGVuc2lvbktleTo6SGMpXSA9IFN0cmluZygpOworICAgIH0KIAogICAgIGNvbnN0
IEhhc2hTZXQ8U3RyaW5nPiYgYXZhaWxhYmxlTG9jYWxlcyA9IGludGxEYXRlVGltZUZvcm1hdEF2
YWlsYWJsZUxvY2FsZXMoKTsKICAgICBhdXRvIHJlc29sdmVkID0gcmVzb2x2ZUxvY2FsZShnbG9i
YWxPYmplY3QsIGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMsIGxvY2FsZU1hdGNo
ZXIsIGxvY2FsZU9wdGlvbnMsIHsgUmVsZXZhbnRFeHRlbnNpb25LZXk6OkNhLCBSZWxldmFudEV4
dGVuc2lvbktleTo6SGMsIFJlbGV2YW50RXh0ZW5zaW9uS2V5OjpOdSB9LCBsb2NhbGVEYXRhKTsK
QEAgLTQ5OSw3ICs1OTAsNyBAQCB2b2lkIEludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZURh
dGVUaW1lRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgZWxzZSBpZiAo
bV9jYWxlbmRhciA9PSAiZXRoaW9hYSIpCiAgICAgICAgIG1fY2FsZW5kYXIgPSAiZXRoaW9waWMt
YW1ldGUtYWxlbSJfczsKIAotICAgIG1faG91ckN5Y2xlID0gcmVzb2x2ZWQuZXh0ZW5zaW9uc1tz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVsZXZhbnRFeHRlbnNpb25LZXk6OkhjKV07CisgICAgaG91
ckN5Y2xlID0gcGFyc2VIb3VyQ3ljbGUocmVzb2x2ZWQuZXh0ZW5zaW9uc1tzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oUmVsZXZhbnRFeHRlbnNpb25LZXk6OkhjKV0pOwogICAgIG1fbnVtYmVyaW5nU3lz
dGVtID0gcmVzb2x2ZWQuZXh0ZW5zaW9uc1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVsZXZhbnRF
eHRlbnNpb25LZXk6Ok51KV07CiAgICAgbV9kYXRhTG9jYWxlID0gcmVzb2x2ZWQuZGF0YUxvY2Fs
ZTsKICAgICBDU3RyaW5nIGRhdGFMb2NhbGVXaXRoRXh0ZW5zaW9ucyA9IG1ha2VTdHJpbmcobV9k
YXRhTG9jYWxlLCAiLXUtY2EtIiwgbV9jYWxlbmRhciwgIi1udS0iLCBtX251bWJlcmluZ1N5c3Rl
bSkudXRmOCgpOwpAQCAtNjA5LDI1ICs3MDAsNTYgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6
OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAog
CiAgICAgSG91ciBob3VyID0gaW50bE9wdGlvbjxIb3VyPihnbG9iYWxPYmplY3QsIG9wdGlvbnMs
IHZtLnByb3BlcnR5TmFtZXMtPmhvdXIsIHsgeyAiMi1kaWdpdCJfcywgSG91cjo6VHdvRGlnaXQg
fSwgeyAibnVtZXJpYyJfcywgSG91cjo6TnVtZXJpYyB9IH0sICJob3VyIG11c3QgYmUgXCIyLWRp
Z2l0XCIgb3IgXCJudW1lcmljXCIiX3MsIEhvdXI6Ok5vbmUpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgc3dpdGNoIChob3VyKSB7Ci0gICAgY2FzZSBIb3Vy
OjpUd29EaWdpdDoKLSAgICAgICAgaWYgKGlzSG91cjEyVW5kZWZpbmVkICYmIG1faG91ckN5Y2xl
LmlzTnVsbCgpKQotICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoImpq
Iik7Ci0gICAgICAgIGVsc2UgaWYgKGhvdXIxMiA9PSBUcmlTdGF0ZTo6VHJ1ZSkKLSAgICAgICAg
ICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJoaCIpOwotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiSEgiKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBIb3VyOjpOdW1lcmljOgotICAgICAgICBpZiAoaXNIb3VyMTJVbmRl
ZmluZWQgJiYgbV9ob3VyQ3ljbGUuaXNOdWxsKCkpCi0gICAgICAgICAgICBza2VsZXRvbkJ1aWxk
ZXIuYXBwZW5kKCdqJyk7Ci0gICAgICAgIGVsc2UgaWYgKGhvdXIxMiA9PSBUcmlTdGF0ZTo6VHJ1
ZSkKLSAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJ2gnKTsKLSAgICAgICAgZWxz
ZQotICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnSCcpOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIEhvdXI6Ok5vbmU6Ci0gICAgICAgIGJyZWFrOworICAgIHsKKyAgICAgICAg
Ly8gU3BlY2lmaWNhbGx5LCB0aGlzIGhvdXItY3ljbGUgLyBob3VyMTIgYmVoYXZpb3IgaXMgc2xp
Z2h0bHkgZGlmZmVyZW50IGZyb20gdGhlIHNwZWMuCisgICAgICAgIC8vIEJ1dCB0aGUgc3BlYyBi
ZWhhdmlvciBpcyBrbm93biB0byBjYXVzZSBzdXJwcmlzaW5nIGJlaGF2aW9yc1sxLDJdLCBhbmQg
dGhlIHNwZWMgY2hhbmdlIGlzIG9uZ29pbmdbM10uCisgICAgICAgIC8vIFdlIGltcGxlbWVudCBT
cGlkZXJNb25rZXkncyBiZWhhdmlvciBkZXNjcmliZWQgaW4gWzRdLgorICAgICAgICAvLworICAg
ICAgICAvLyAgICAgPiBObyBvcHRpb24gcHJlc2VudDogImoiCisgICAgICAgIC8vICAgICA+IGhv
dXIxMiA9IHRydWU6ICJoIgorICAgICAgICAvLyAgICAgPiBob3VyMTIgPSBmYWxzZTogIkgiCisg
ICAgICAgIC8vICAgICA+IGhvdXJDeWNsZSA9IGgxMTogImgiLCBwbHVzIG1vZGlmeWluZyB0aGUg
cmVzb2x2ZWQgcGF0dGVybiB0byB1c2UgdGhlIGhvdXIgc3ltYm9sICJLIi4KKyAgICAgICAgLy8g
ICAgID4gaG91ckN5Y2xlID0gaDEyOiAiaCIsIHBsdXMgbW9kaWZ5aW5nIHRoZSByZXNvbHZlZCBw
YXR0ZXJuIHRvIHVzZSB0aGUgaG91ciBzeW1ib2wgImgiLgorICAgICAgICAvLyAgICAgPiBob3Vy
Q3ljbGUgPSBoMjM6ICJIIiwgcGx1cyBtb2RpZnlpbmcgdGhlIHJlc29sdmVkIHBhdHRlcm4gdG8g
dXNlIHRoZSBob3VyIHN5bWJvbCAiSCIuCisgICAgICAgIC8vICAgICA+IGhvdXJDeWNsZSA9IGgy
NDogIkgiLCBwbHVzIG1vZGlmeWluZyB0aGUgcmVzb2x2ZWQgcGF0dGVybiB0byB1c2UgdGhlIGhv
dXIgc3ltYm9sICJrIi4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gWzFdOiBodHRwczovL2dpdGh1
Yi5jb20vdGMzOS9lY21hNDAyL2lzc3Vlcy80MDIKKyAgICAgICAgLy8gWzJdOiBodHRwczovL2J1
Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD0xMDQ1NzkxCisgICAg
ICAgIC8vIFszXTogaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvZWNtYTQwMi9wdWxsLzQzNgorICAg
ICAgICAvLyBbNF06IGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L2VjbWE0MDIvaXNzdWVzLzQwMiNp
c3N1ZWNvbW1lbnQtNjIzNjI4MzIwCisgICAgICAgIFVDaGFyIHNrZWxldG9uQ2hhcmFjdGVyID0g
J2onOworICAgICAgICBpZiAoaG91cjEyID09IFRyaVN0YXRlOjpJbmRldGVybWluYXRlKSB7Cisg
ICAgICAgICAgICBzd2l0Y2ggKGhvdXJDeWNsZSkgeworICAgICAgICAgICAgY2FzZSBIb3VyQ3lj
bGU6Ok5vbmU6CisgICAgICAgICAgICAgICAgc2tlbGV0b25DaGFyYWN0ZXIgPSAnaic7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEhvdXJDeWNsZTo6SDExOgorICAg
ICAgICAgICAgY2FzZSBIb3VyQ3ljbGU6OkgxMjoKKyAgICAgICAgICAgICAgICBza2VsZXRvbkNo
YXJhY3RlciA9ICdoJzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
SG91ckN5Y2xlOjpIMjM6CisgICAgICAgICAgICBjYXNlIEhvdXJDeWNsZTo6SDI0OgorICAgICAg
ICAgICAgICAgIHNrZWxldG9uQ2hhcmFjdGVyID0gJ0gnOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKGhvdXIx
MiA9PSBUcmlTdGF0ZTo6VHJ1ZSkKKyAgICAgICAgICAgICAgICBza2VsZXRvbkNoYXJhY3RlciA9
ICdoJzsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBza2VsZXRvbkNoYXJhY3Rl
ciA9ICdIJzsKKyAgICAgICAgfQorCisgICAgICAgIHN3aXRjaCAoaG91cikgeworICAgICAgICBj
YXNlIEhvdXI6OlR3b0RpZ2l0OgorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZChz
a2VsZXRvbkNoYXJhY3Rlcik7CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKHNr
ZWxldG9uQ2hhcmFjdGVyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEhvdXI6
Ok51bWVyaWM6CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKHNrZWxldG9uQ2hh
cmFjdGVyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEhvdXI6Ok5vbmU6Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChPcHRpb25zOjp1
c2VJbnRsRGF0ZVRpbWVGb3JtYXREYXlQZXJpb2QoKSkgewpAQCAtNzAxLDcgKzgyMywxOCBAQCB2
b2lkIEludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgbV90aW1lU3R5bGUgPSBpbnRsT3B0aW9uPERhdGVU
aW1lU3R5bGU+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+dGltZVN0
eWxlLCB7IHsgImZ1bGwiX3MsIERhdGVUaW1lU3R5bGU6OkZ1bGwgfSwgeyAibG9uZyJfcywgRGF0
ZVRpbWVTdHlsZTo6TG9uZyB9LCB7ICJtZWRpdW0iX3MsIERhdGVUaW1lU3R5bGU6Ok1lZGl1bSB9
LCB7ICJzaG9ydCJfcywgRGF0ZVRpbWVTdHlsZTo6U2hvcnQgfSB9LCAidGltZVN0eWxlIG11c3Qg
YmUgXCJmdWxsXCIsIFwibG9uZ1wiLCBcIm1lZGl1bVwiLCBvciBcInNob3J0XCIiX3MsIERhdGVU
aW1lU3R5bGU6Ok5vbmUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7
CiAKLSAgICBib29sIGNhbkluY2x1ZGVIb3VyID0gdHJ1ZTsKKworICAgIGF1dG8gcGF0dGVybkZy
b21Ta2VsZXRvbiA9IFsmXShjb25zdCBVQ2hhciogc2tlbGV0b24sIHVuc2lnbmVkIHNrZWxldG9u
U2l6ZSwgVmVjdG9yPFVDaGFyLCAzMj4mIHBhdHRlcm5CdWZmZXIsIFVFcnJvckNvZGUmIHN0YXR1
cykgeworICAgICAgICAvLyBBbHdheXMgdXNlIElDVSBkYXRlIGZvcm1hdCBnZW5lcmF0b3IsIHJh
dGhlciB0aGFuIG91ciBvd24gcGF0dGVybiBsaXN0IGFuZCBtYXRjaGVyLgorICAgICAgICBhdXRv
IGdlbmVyYXRvciA9IHN0ZDo6dW5pcXVlX3B0cjxVRGF0ZVRpbWVQYXR0ZXJuR2VuZXJhdG9yLCBJ
Q1VEZWxldGVyPHVkYXRwZ19jbG9zZT4+KHVkYXRwZ19vcGVuKGRhdGFMb2NhbGVXaXRoRXh0ZW5z
aW9ucy5kYXRhKCksICZzdGF0dXMpKTsKKyAgICAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNp
bmdGdW5jdGlvbih1ZGF0cGdfZ2V0QmVzdFBhdHRlcm5XaXRoT3B0aW9ucywgZ2VuZXJhdG9yLmdl
dCgpLCBza2VsZXRvbiwgc2tlbGV0b25TaXplLCBVREFUUEdfTUFUQ0hfSE9VUl9GSUVMRF9MRU5H
VEgsIHBhdHRlcm5CdWZmZXIpOworICAgICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgfTsKKwogICAgIFZlY3RvcjxVQ2hhciwgMzI+IHBhdHRlcm5C
dWZmZXI7CiAgICAgaWYgKG1fZGF0ZVN0eWxlICE9IERhdGVUaW1lU3R5bGU6Ok5vbmUgfHwgbV90
aW1lU3R5bGUgIT0gRGF0ZVRpbWVTdHlsZTo6Tm9uZSkgewogICAgICAgICAvLyAzMC4gRm9yIGVh
Y2ggcm93IGluIFRhYmxlIDEsIGV4Y2VwdCB0aGUgaGVhZGVyIHJvdywgZG8KQEAgLTcxNCwxMiAr
ODQ3LDYgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVGltZUZvcm1h
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKLSAgICAgICAgLy8gSWYgdGltZVN0eWxlIGlzIG5vdCBzcGVjaWZpZWQsIG1faG91
ckN5Y2xlIGRvZXMgbm90IG1hdHRlci4gTGV0J3Mgc2tpcCBlbmZvcmNpbmcgc3RlcC4KLSAgICAg
ICAgaWYgKG1fdGltZVN0eWxlID09IERhdGVUaW1lU3R5bGU6Ok5vbmUpIHsKLSAgICAgICAgICAg
IGNhbkluY2x1ZGVIb3VyID0gZmFsc2U7Ci0gICAgICAgICAgICBtX2hvdXJDeWNsZSA9IFN0cmlu
ZygpOwotICAgICAgICB9Ci0KICAgICAgICAgYXV0byBwYXJzZVVEYXRlRm9ybWF0U3R5bGUgPSBb
XShEYXRlVGltZVN0eWxlIHN0eWxlKSB7CiAgICAgICAgICAgICBzd2l0Y2ggKHN0eWxlKSB7CiAg
ICAgICAgICAgICBjYXNlIERhdGVUaW1lU3R5bGU6OkZ1bGw6CkBAIC03MzgsNyArODY1LDcgQEAg
dm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LAogCiAgICAgICAgIC8vIFdlIGNhbm5vdCB1c2UgdGhpcyBV
RGF0ZUZvcm1hdCBkaXJlY3RseSB5ZXQgYmVjYXVzZSB3ZSBuZWVkIHRvIGVuZm9yY2Ugc3BlY2lm
aWVkIGhvdXJDeWNsZS4KICAgICAgICAgLy8gRmlyc3QsIHdlIGNyZWF0ZSBVRGF0ZUZvcm1hdCB2
aWEgZGF0ZVN0eWxlIGFuZCB0aW1lU3R5bGUuIEFuZCB0aGVuIGNvbnZlcnQgaXQgdG8gcGF0dGVy
biBzdHJpbmcuCi0gICAgICAgIC8vIEFmdGVyIHVwZGF0aW5nIHRoaXMgcGF0dGVybiBzdHJpbmcg
d2l0aCBtX2hvdXJDeWNsZSwgd2UgY3JlYXRlIGEgZmluYWwgVURhdGVGb3JtYXQgd2l0aCB0aGUg
dXBkYXRlZCBwYXR0ZXJuIHN0cmluZy4KKyAgICAgICAgLy8gQWZ0ZXIgdXBkYXRpbmcgdGhpcyBw
YXR0ZXJuIHN0cmluZyB3aXRoIGhvdXJDeWNsZSwgd2UgY3JlYXRlIGEgZmluYWwgVURhdGVGb3Jt
YXQgd2l0aCB0aGUgdXBkYXRlZCBwYXR0ZXJuIHN0cmluZy4KICAgICAgICAgVUVycm9yQ29kZSBz
dGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgICAgIFN0cmluZ1ZpZXcgdGltZVpvbmVWaWV3KG1f
dGltZVpvbmUpOwogICAgICAgICBhdXRvIGRhdGVGb3JtYXRGcm9tU3R5bGUgPSBzdGQ6OnVuaXF1
ZV9wdHI8VURhdGVGb3JtYXQsIFVEYXRlRm9ybWF0RGVsZXRlcj4odWRhdF9vcGVuKHBhcnNlVURh
dGVGb3JtYXRTdHlsZShtX3RpbWVTdHlsZSksIHBhcnNlVURhdGVGb3JtYXRTdHlsZShtX2RhdGVT
dHlsZSksIGRhdGFMb2NhbGVXaXRoRXh0ZW5zaW9ucy5kYXRhKCksIHRpbWVab25lVmlldy51cGNv
bnZlcnRlZENoYXJhY3RlcnMoKSwgdGltZVpvbmVWaWV3Lmxlbmd0aCgpLCBudWxscHRyLCAtMSwg
JnN0YXR1cykpOwpAQCAtNzUyLDgyICs4NzksNTkgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6
OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAog
ICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0
byBpbml0aWFsaXplIERhdGVUaW1lRm9ybWF0Il9zKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIElmIGhvdXIgaXMgbm90IHNwZWNpZmll
ZCwgbV9ob3VyQ3ljbGUgZG9lcyBub3QgbWF0dGVyLiBMZXQncyBza2lwIGVuZm9yY2luZyBzdGVw
LgotICAgICAgICBpZiAoaG91ciA9PSBIb3VyOjpOb25lKSB7Ci0gICAgICAgICAgICBjYW5JbmNs
dWRlSG91ciA9IGZhbHNlOwotICAgICAgICAgICAgbV9ob3VyQ3ljbGUgPSBTdHJpbmcoKTsKLSAg
ICAgICAgfQogCi0gICAgICAgIC8vIEFsd2F5cyB1c2UgSUNVIGRhdGUgZm9ybWF0IGdlbmVyYXRv
ciwgcmF0aGVyIHRoYW4gb3VyIG93biBwYXR0ZXJuIGxpc3QgYW5kIG1hdGNoZXIuCi0gICAgICAg
IFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgICAgICBhdXRvKiBnZW5lcmF0
b3IgPSB1ZGF0cGdfb3BlbihkYXRhTG9jYWxlV2l0aEV4dGVuc2lvbnMuZGF0YSgpLCAmc3RhdHVz
KTsKLSAgICAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAgICAgICB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgRGF0ZVRp
bWVGb3JtYXQiX3MpOwotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAvLyBJdCBpcyBwb3Nz
aWJsZSB0aGF0IHRpbWVTdHlsZSBpbmNsdWRlcyBkYXlQZXJpb2QsIHdoaWNoIGlzIHNlbnNpdGl2
ZSB0byBob3VyLWN5Y2xlLgorICAgICAgICAvLyBJZiBkYXlQZXJpb2QgaXMgaW5jbHVkZWQsIGp1
c3QgcmVwbGFjaW5nIGhvdXIgYmFzZWQgb24gaG91ckN5Y2xlIC8gaG91cjEyIHByb2R1Y2VzIHN0
cmFuZ2UgcmVzdWx0cy4KKyAgICAgICAgLy8gTGV0J3MgY29uc2lkZXIgYWJvdXQgdGhlIGV4YW1w
bGUuIFRoZSBmb3JtYXR0ZWQgcmVzdWx0IGxvb2tzIGxpa2UgIjAyOjEyOjQ3IFBNIENvb3JkaW5h
dGVkIFVuaXZlcnNhbCBUaW1lIgorICAgICAgICAvLyBJZiB3ZSBzaW1wbHkgcmVwbGFjZSAwMiB0
byAxNCwgdGhpcyBiZWNvbWVzICIxNDoxMjo0NyBQTSBDb29yZGluYXRlZCBVbml2ZXJzYWwgVGlt
ZSIsIHRoaXMgbG9va3Mgc3RyYW5nZSBzaW5jZSAiUE0iIGlzIHVubmVjZXNzYXJ5IQorICAgICAg
ICAvLworICAgICAgICAvLyBJZiB0aGUgZ2VuZXJhdGVkIHBhdHRlcm4ncyBob3VyMTIgZG9lcyBu
b3QgbWF0Y2ggYWdhaW5zdCB0aGUgb3B0aW9uJ3Mgb25lLCB3ZSByZXRyaWV2ZSBza2VsZXRvbiBm
cm9tIHRoZSBwYXR0ZXJuLCBlbmZvcmNpbmcgaG91ci1jeWNsZSwKKyAgICAgICAgLy8gYW5kIHJl
LWdlbmVyYXRpbmcgdGhlIGJlc3QgcGF0dGVybiBmcm9tIHRoZSBtb2RpZmllZCBza2VsZXRvbi4g
SUNVIHdpbGwgbG9vayBpbnRvIHRoZSBnZW5lcmF0ZWQgc2tlbGV0b24sIGFuZCBwaWNrIHRoZSBi
ZXN0IGZvcm1hdCBmb3IgdGhlIHJlcXVlc3QuCisgICAgICAgIC8vIFdlIGRvIG5vdCBjYXJlIGFi
b3V0IGgxMSB2LnMuIGgxMiBhbmQgaDIzIHYucy4gaDI0IGRpZmZlcmVuY2UgaGVyZSBzaW5jZSB0
aGlzIHdpbGwgYmUgbGF0ZXIgYWRqdXN0ZWQgYnkgcmVwbGFjZUhvdXJDeWNsZUluUGF0dGVybi4K
KyAgICAgICAgLy8KKyAgICAgICAgLy8gdGVzdDI2Mi90ZXN0L2ludGw0MDIvRGF0ZVRpbWVGb3Jt
YXQvcHJvdG90eXBlL2Zvcm1hdC90aW1lZGF0ZXN0eWxlLWVuLmpzIGluY2x1ZGVzIHRoZSB0ZXN0
IGZvciB0aGlzIGJlaGF2aW9yLgorICAgICAgICBpZiAobV90aW1lU3R5bGUgIT0gRGF0ZVRpbWVT
dHlsZTo6Tm9uZSAmJiAoaG91ckN5Y2xlICE9IEhvdXJDeWNsZTo6Tm9uZSB8fCBob3VyMTIgIT0g
VHJpU3RhdGU6OkluZGV0ZXJtaW5hdGUpKSB7CisgICAgICAgICAgICBhdXRvIGlzSG91cjEyID0g
W10oSG91ckN5Y2xlIGhvdXJDeWNsZSkgeworICAgICAgICAgICAgICAgIHJldHVybiBob3VyQ3lj
bGUgPT0gSG91ckN5Y2xlOjpIMTEgfHwgaG91ckN5Y2xlID09IEhvdXJDeWNsZTo6SDEyOworICAg
ICAgICAgICAgfTsKKyAgICAgICAgICAgIGJvb2wgc3BlY2lmaWVkSG91cjEyID0gZmFsc2U7Cisg
ICAgICAgICAgICAvLyBJZiBob3VyMTIgaXMgc3BlY2lmaWVkLCB3ZSBwcmVmZXIgaXQgYW5kIGln
bm9yZSBob3VyQ3ljbGUuCisgICAgICAgICAgICBpZiAoaG91cjEyICE9IFRyaVN0YXRlOjpJbmRl
dGVybWluYXRlKQorICAgICAgICAgICAgICAgIHNwZWNpZmllZEhvdXIxMiA9IGhvdXIxMiA9PSBU
cmlTdGF0ZTo6VHJ1ZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzcGVjaWZp
ZWRIb3VyMTIgPSBpc0hvdXIxMihob3VyQ3ljbGUpOworICAgICAgICAgICAgSG91ckN5Y2xlIGV4
dHJhY3RlZEhvdXJDeWNsZSA9IGhvdXJDeWNsZUZyb21QYXR0ZXJuKHBhdHRlcm5CdWZmZXIpOwor
ICAgICAgICAgICAgaWYgKGV4dHJhY3RlZEhvdXJDeWNsZSAhPSBIb3VyQ3ljbGU6Ok5vbmUgJiYg
aXNIb3VyMTIoZXh0cmFjdGVkSG91ckN5Y2xlKSAhPSBzcGVjaWZpZWRIb3VyMTIpIHsKKyAgICAg
ICAgICAgICAgICBWZWN0b3I8VUNoYXIsIDMyPiBza2VsZXRvbjsKKyAgICAgICAgICAgICAgICBh
dXRvIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1ZGF0cGdfZ2V0U2tlbGV0
b24sIG51bGxwdHIsIHBhdHRlcm5CdWZmZXIuZGF0YSgpLCBwYXR0ZXJuQnVmZmVyLnNpemUoKSwg
c2tlbGV0b24pOworICAgICAgICAgICAgICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgeworICAg
ICAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFp
bGVkIHRvIGluaXRpYWxpemUgRGF0ZUludGVydmFsRm9ybWF0Il9zKTsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXBsYWNl
SG91ckN5Y2xlSW5Ta2VsZXRvbihza2VsZXRvbiwgc3BlY2lmaWVkSG91cjEyKTsKKyAgICAgICAg
ICAgICAgICBkYXRhTG9nTG5JZihJbnRsRGF0ZVRpbWVGb3JtYXRJbnRlcm5hbDo6dmVyYm9zZSwg
InJlcGxhY2VkOigiLCBTdHJpbmdWaWV3KHNrZWxldG9uLmRhdGEoKSwgc2tlbGV0b24uc2l6ZSgp
KSwgIikiKTsKKworICAgICAgICAgICAgICAgIHBhdHRlcm5CdWZmZXIuY2xlYXIoKTsKKyAgICAg
ICAgICAgICAgICBwYXR0ZXJuRnJvbVNrZWxldG9uKHNrZWxldG9uLmRhdGEoKSwgc2tlbGV0b24u
c2l6ZSgpLCBwYXR0ZXJuQnVmZmVyLCBzdGF0dXMpOworICAgICAgICAgICAgICAgIGlmIChVX0ZB
SUxVUkUoc3RhdHVzKSkgeworICAgICAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgRGF0ZUludGVydmFsRm9ybWF0
Il9zKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KICAgICAgICAgfQotCisgICAgfSBlbHNlIHsKKyAgICAgICAgVUVycm9yQ29k
ZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgICAgIFN0cmluZyBza2VsZXRvbiA9IHNrZWxl
dG9uQnVpbGRlci50b1N0cmluZygpOwotICAgICAgICBTdHJpbmdWaWV3IHNrZWxldG9uVmlldyhz
a2VsZXRvbik7Ci0gICAgICAgIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1
ZGF0cGdfZ2V0QmVzdFBhdHRlcm5XaXRoT3B0aW9ucywgZ2VuZXJhdG9yLCBza2VsZXRvblZpZXcu
dXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCkuZ2V0KCksIHNrZWxldG9uVmlldy5sZW5ndGgoKSwgVURB
VFBHX01BVENIX0hPVVJfRklFTERfTEVOR1RILCBwYXR0ZXJuQnVmZmVyKTsKLSAgICAgICAgdWRh
dHBnX2Nsb3NlKGdlbmVyYXRvcik7CisgICAgICAgIHBhdHRlcm5Gcm9tU2tlbGV0b24oU3RyaW5n
Vmlldyhza2VsZXRvbikudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCkuZ2V0KCksIHNrZWxldG9uLmxl
bmd0aCgpLCBwYXR0ZXJuQnVmZmVyLCBzdGF0dXMpOwogICAgICAgICBpZiAoVV9GQUlMVVJFKHN0
YXR1cykpIHsKICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBEYXRlVGltZUZvcm1hdCJfcyk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvLyBFbmZvcmNlIG91ciBob3VyQ3ljbGUs
IHJlcGxhY2luZyBob3VyIGNoYXJhY3RlcnMgaW4gcGF0dGVybi4gSUNVIGNhbiBwaWNrIGZvcm1h
dCB3aGljaCBkb2VzIG5vdCBhZ3JlZSB3aXRoIHNwZWNpZmllZCBob3VyQ3ljbGUuCi0gICAgLy8g
VGhpcyBzdGVwIG1vZGlmaWVzIGdlbmVyYXRlZCBwYXR0ZXJuIHRvIHVzZSBzcGVjaWZpZWQgaG91
ckN5Y2xlLCBhbmQgaXQgaXMgc3BlY2lmaWVkIGluIDEuMS4xIEluaXRpYWxpemVEYXRlVGltZUZv
cm1hdCBzdGVwIDMzLgotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgY2FjaGUgYGhvdXJDeWNsZURl
ZmF1bHRgIHZhbHVlIG9idGFpbmVkIGJ5IGdlbmVyYXRpbmcgImpqbW0iIHBhdHRlcm4gZnJvbSBV
RGF0ZVRpbWVQYXR0ZXJuR2VuZXJhdG9yLgotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTM0NTkKLSAgICBpZiAoY2FuSW5jbHVkZUhvdXIpIHsKLSAgICAg
ICAgYm9vbCBoYXNIb3VyID0gZmFsc2U7Ci0gICAgICAgIGlmICghbV9ob3VyQ3ljbGUuaXNOdWxs
KCkgfHwgIWlzSG91cjEyVW5kZWZpbmVkKSB7Ci0gICAgICAgICAgICBVQ2hhciBob3VyRnJvbUhv
dXJDeWNsZSA9ICdIJzsgLy8gSDIzCi0gICAgICAgICAgICBpZiAobV9ob3VyQ3ljbGUgPT0gImgx
MSIpCi0gICAgICAgICAgICAgICAgaG91ckZyb21Ib3VyQ3ljbGUgPSAnSyc7Ci0gICAgICAgICAg
ICBlbHNlIGlmIChtX2hvdXJDeWNsZSA9PSAiaDEyIikKLSAgICAgICAgICAgICAgICBob3VyRnJv
bUhvdXJDeWNsZSA9ICdoJzsKLSAgICAgICAgICAgIGVsc2UgaWYgKG1faG91ckN5Y2xlID09ICJo
MjQiKQotICAgICAgICAgICAgICAgIGhvdXJGcm9tSG91ckN5Y2xlID0gJ2snOwotCi0gICAgICAg
ICAgICBib29sIGlzRXNjYXBlZCA9IGZhbHNlOwotICAgICAgICAgICAgZm9yIChhdXRvJiBjIDog
cGF0dGVybkJ1ZmZlcikgewotICAgICAgICAgICAgICAgIGlmIChjID09ICdcJycpCi0gICAgICAg
ICAgICAgICAgICAgIGlzRXNjYXBlZCA9ICFpc0VzY2FwZWQ7Ci0gICAgICAgICAgICAgICAgZWxz
ZSBpZiAoIWlzRXNjYXBlZCAmJiAoYyA9PSAnaCcgfHwgYyA9PSAnSCcgfHwgYyA9PSAnaycgfHwg
YyA9PSAnSycpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoYykgewotICAgICAgICAg
ICAgICAgICAgICBjYXNlICdLJzoKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAnSCc6IHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0hvdXIxMlVuZGVmaW5lZCkKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjID0gaG91ckZyb21Ib3VyQ3ljbGU7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBlbHNlIGlmIChob3VyMTIgPT0gVHJpU3RhdGU6OlRydWUpCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYyA9ICdLJzsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gJ0gnOwotICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgY2Fz
ZSAnaCc6Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2snOiB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoaXNIb3VyMTJVbmRlZmluZWQpCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYyA9IGhvdXJGcm9tSG91ckN5Y2xlOwotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBp
ZiAoaG91cjEyID09IFRyaVN0YXRlOjpUcnVlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGMgPSAnaCc7Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYyA9ICdrJzsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgICAgICBoYXNIb3VyID0gdHJ1ZTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFoYXNIb3VyKQotICAg
ICAgICAgICAgbV9ob3VyQ3ljbGUgPSBTdHJpbmcoKTsKLSAgICB9CisgICAgLy8gQWZ0ZXIgZ2Vu
ZXJhdGluZyBwYXR0ZXJuIGZyb20gc2tlbGV0b24sIHdlIG5lZWQgdG8gY2hhbmdlIGgxMSB2LnMu
IGgxMiBhbmQgaDIzIHYucy4gaDI0IGlmIGhvdXJDeWNsZSBpcyBzcGVjaWZpZWQuCisgICAgaWYg
KGhvdXJDeWNsZSAhPSBIb3VyQ3ljbGU6Ok5vbmUpCisgICAgICAgIHJlcGxhY2VIb3VyQ3ljbGVJ
blBhdHRlcm4ocGF0dGVybkJ1ZmZlciwgaG91ckN5Y2xlKTsKIAogICAgIFN0cmluZ1ZpZXcgcGF0
dGVybihwYXR0ZXJuQnVmZmVyLmRhdGEoKSwgcGF0dGVybkJ1ZmZlci5zaXplKCkpOwogICAgIHNl
dEZvcm1hdHNGcm9tUGF0dGVybihwYXR0ZXJuKTsKQEAgLTg0OCw2ICs5NTIsMjUgQEAgdm9pZCBJ
bnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LAogICAgIHVjYWxfc2V0R3JlZ29yaWFuQ2hhbmdlKGNhbCwgbWluRUNN
QVNjcmlwdFRpbWUsICZzdGF0dXMpOwogfQogCitBU0NJSUxpdGVyYWwgSW50bERhdGVUaW1lRm9y
bWF0Ojpob3VyQ3ljbGVTdHJpbmcoSG91ckN5Y2xlIGhvdXJDeWNsZSkKK3sKKyAgICBzd2l0Y2gg
KGhvdXJDeWNsZSkgeworICAgIGNhc2UgSG91ckN5Y2xlOjpIMTE6CisgICAgICAgIHJldHVybiAi
aDExIl9zOworICAgIGNhc2UgSG91ckN5Y2xlOjpIMTI6CisgICAgICAgIHJldHVybiAiaDEyIl9z
OworICAgIGNhc2UgSG91ckN5Y2xlOjpIMjM6CisgICAgICAgIHJldHVybiAiaDIzIl9zOworICAg
IGNhc2UgSG91ckN5Y2xlOjpIMjQ6CisgICAgICAgIHJldHVybiAiaDI0Il9zOworICAgIGNhc2Ug
SG91ckN5Y2xlOjpOb25lOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
cmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7Cit9CisKIEFTQ0lJTGl0ZXJh
bCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OndlZWtkYXlTdHJpbmcoV2Vla2RheSB3ZWVrZGF5KQogewog
ICAgIHN3aXRjaCAod2Vla2RheSkgewpAQCAtMTA0MCw5ICsxMTYzLDkgQEAgSlNPYmplY3QqIElu
dGxEYXRlVGltZUZvcm1hdDo6cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpIGNvbnMKICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
Pm51bWJlcmluZ1N5c3RlbSwganNOb250cml2aWFsU3RyaW5nKHZtLCBtX251bWJlcmluZ1N5c3Rl
bSkpOwogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+dGltZVpv
bmUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgbV90aW1lWm9uZSkpOwogCi0gICAgaWYgKCFtX2hv
dXJDeWNsZS5pc051bGwoKSkgewotICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPmhvdXJDeWNsZSwganNOb250cml2aWFsU3RyaW5nKHZtLCBtX2hvdXJDeWNs
ZSkpOwotICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmhv
dXIxMiwganNCb29sZWFuKG1faG91ckN5Y2xlID09ICJoMTEiIHx8IG1faG91ckN5Y2xlID09ICJo
MTIiKSk7CisgICAgaWYgKG1faG91ckN5Y2xlICE9IEhvdXJDeWNsZTo6Tm9uZSkgeworICAgICAg
ICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmhvdXJDeWNsZSwganNO
b250cml2aWFsU3RyaW5nKHZtLCBob3VyQ3ljbGVTdHJpbmcobV9ob3VyQ3ljbGUpKSk7CisgICAg
ICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+aG91cjEyLCBqc0Jv
b2xlYW4obV9ob3VyQ3ljbGUgPT0gSG91ckN5Y2xlOjpIMTEgfHwgbV9ob3VyQ3ljbGUgPT0gSG91
ckN5Y2xlOjpIMTIpKTsKICAgICB9CiAKICAgICBpZiAobV93ZWVrZGF5ICE9IFdlZWtkYXk6Ok5v
bmUpCkBAIC0xMjY3LDggKzEzOTAsOCBAQCBVRGF0ZUludGVydmFsRm9ybWF0KiBJbnRsRGF0ZVRp
bWVGb3JtYXQ6OmNyZWF0ZURhdGVJbnRlcnZhbEZvcm1hdElmTmVjZXNzYXJ5KEpTRwogICAgIC8v
IFdlIG5lZWQgdG8gZW5mb3JjZSBIb3VyQ3ljbGUgYnkgc2V0dGluZyAiaGMiIGV4dGVuc2lvbiBp
ZiBpdCBpcyBzcGVjaWZpZWQuCiAgICAgU3RyaW5nQnVpbGRlciBsb2NhbGVCdWlsZGVyOwogICAg
IGxvY2FsZUJ1aWxkZXIuYXBwZW5kKG1fZGF0YUxvY2FsZSwgIi11LWNhLSIsIG1fY2FsZW5kYXIs
ICItbnUtIiwgbV9udW1iZXJpbmdTeXN0ZW0pOwotICAgIGlmICghbV9ob3VyQ3ljbGUuaXNOdWxs
KCkpCi0gICAgICAgIGxvY2FsZUJ1aWxkZXIuYXBwZW5kKCItaGMtIiwgbV9ob3VyQ3ljbGUpOwor
ICAgIGlmIChtX2hvdXJDeWNsZSAhPSBIb3VyQ3ljbGU6Ok5vbmUpCisgICAgICAgIGxvY2FsZUJ1
aWxkZXIuYXBwZW5kKCItaGMtIiwgaG91ckN5Y2xlU3RyaW5nKG1faG91ckN5Y2xlKSk7CiAgICAg
Q1N0cmluZyBkYXRhTG9jYWxlV2l0aEV4dGVuc2lvbnMgPSBsb2NhbGVCdWlsZGVyLnRvU3RyaW5n
KCkudXRmOCgpOwogCiAgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5oCmlu
ZGV4IDBiZGEyNTk4OTBlZDAzZjMxZWYyZjA1ZGE4MTY1Yzc0MmZmMzUzMjcuLmU3NjM1MmI2Yzc1
ZjFkMTJjMGUyZWZmYWZiODRkZGI1NDQ5ZjEzMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5oCkBAIC03OCw2ICs3OCw3IEBAIGNs
YXNzIEludGxEYXRlVGltZUZvcm1hdCBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsK
IAogICAgIFVEYXRlSW50ZXJ2YWxGb3JtYXQqIGNyZWF0ZURhdGVJbnRlcnZhbEZvcm1hdElmTmVj
ZXNzYXJ5KEpTR2xvYmFsT2JqZWN0Kik7CiAKKyAgICBlbnVtIGNsYXNzIEhvdXJDeWNsZSA6IHVp
bnQ4X3QgeyBOb25lLCBIMTEsIEgxMiwgSDIzLCBIMjQgfTsKICAgICBlbnVtIGNsYXNzIFdlZWtk
YXkgOiB1aW50OF90IHsgTm9uZSwgTmFycm93LCBTaG9ydCwgTG9uZyB9OwogICAgIGVudW0gY2xh
c3MgRXJhIDogdWludDhfdCB7IE5vbmUsIE5hcnJvdywgU2hvcnQsIExvbmcgfTsKICAgICBlbnVt
IGNsYXNzIFllYXIgOiB1aW50OF90IHsgTm9uZSwgVHdvRGlnaXQsIE51bWVyaWMgfTsKQEAgLTkx
LDYgKzkyLDcgQEAgY2xhc3MgSW50bERhdGVUaW1lRm9ybWF0IGZpbmFsIDogcHVibGljIEpTTm9u
RmluYWxPYmplY3QgewogICAgIGVudW0gY2xhc3MgRGF0ZVRpbWVTdHlsZSA6IHVpbnQ4X3QgeyBO
b25lLCBGdWxsLCBMb25nLCBNZWRpdW0sIFNob3J0IH07CiAKICAgICB2b2lkIHNldEZvcm1hdHNG
cm9tUGF0dGVybihjb25zdCBTdHJpbmdWaWV3Jik7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBo
b3VyQ3ljbGVTdHJpbmcoSG91ckN5Y2xlKTsKICAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHdlZWtk
YXlTdHJpbmcoV2Vla2RheSk7CiAgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBlcmFTdHJpbmcoRXJh
KTsKICAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHllYXJTdHJpbmcoWWVhcik7CkBAIC0xMDMsNiAr
MTA1LDExIEBAIGNsYXNzIEludGxEYXRlVGltZUZvcm1hdCBmaW5hbCA6IHB1YmxpYyBKU05vbkZp
bmFsT2JqZWN0IHsKICAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHRpbWVab25lTmFtZVN0cmluZyhU
aW1lWm9uZU5hbWUpOwogICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgZm9ybWF0U3R5bGVTdHJpbmco
RGF0ZVRpbWVTdHlsZSk7CiAKKyAgICBzdGF0aWMgSG91ckN5Y2xlIHBhcnNlSG91ckN5Y2xlKGNv
bnN0IFN0cmluZyYpOworICAgIHN0YXRpYyBIb3VyQ3ljbGUgaG91ckN5Y2xlRnJvbVBhdHRlcm4o
Y29uc3QgVmVjdG9yPFVDaGFyLCAzMj4mKTsKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlSG91ckN5
Y2xlSW5Ta2VsZXRvbihWZWN0b3I8VUNoYXIsIDMyPiYsIGJvb2wgaG91cjEyKTsKKyAgICBzdGF0
aWMgdm9pZCByZXBsYWNlSG91ckN5Y2xlSW5QYXR0ZXJuKFZlY3RvcjxVQ2hhciwgMzI+JiwgSG91
ckN5Y2xlKTsKKwogICAgIHVzaW5nIFVEYXRlRm9ybWF0RGVsZXRlciA9IElDVURlbGV0ZXI8dWRh
dF9jbG9zZT47CiAgICAgdXNpbmcgVURhdGVJbnRlcnZhbEZvcm1hdERlbGV0ZXIgPSBJQ1VEZWxl
dGVyPHVkdGl0dmZtdF9jbG9zZT47CiAKQEAgLTExNSw3ICsxMjIsNyBAQCBjbGFzcyBJbnRsRGF0
ZVRpbWVGb3JtYXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgU3RyaW5n
IG1fY2FsZW5kYXI7CiAgICAgU3RyaW5nIG1fbnVtYmVyaW5nU3lzdGVtOwogICAgIFN0cmluZyBt
X3RpbWVab25lOwotICAgIFN0cmluZyBtX2hvdXJDeWNsZTsKKyAgICBIb3VyQ3ljbGUgbV9ob3Vy
Q3ljbGUgeyBIb3VyQ3ljbGU6Ok5vbmUgfTsKICAgICBXZWVrZGF5IG1fd2Vla2RheSB7IFdlZWtk
YXk6Ok5vbmUgfTsKICAgICBFcmEgbV9lcmEgeyBFcmE6Ok5vbmUgfTsKICAgICBZZWFyIG1feWVh
ciB7IFllYXI6Ok5vbmUgfTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggOTgzMDEyMmZjY2NkYWM4NmJlMmY5MDhlNDVjYjAwODY3MDViYWMz
MC4uYzVjZWE2NzYyZGNmYTY2Y2E2YjRmZDA3ZGVkZGJjODk2ZGE0NzUxMyAxMDA2NDQKLS0tIGEv
SlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBA
QAorMjAyMC0wOS0xNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAg
ICAgIFtKU0NdIEFwcGx5IEludGwuRGF0ZVRpbWVGb3JtYXQgaG91ci1jeWNsZSBjb3JyZWN0bHkg
d2hlbiB0aW1lU3R5bGUgaXMgdXNlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE2NTIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgSlNUZXN0cy9zdHJlc3MvaW50bC1kYXRlLXRpbWUtZm9ybWF0LWRhdGUt
dGltZS1zdHlsZS1ob3VyLWN5Y2xlLmpzIHJlc3VsdCBpcyBub3cgbWF0Y2hpbmcgYWdhaW5zdCBW
OCBhbmQgU3BpZGVyTW9ua2V5LAorICAgICAgICBhbmQgdGhpcyBuZXcgYmVoYXZpb3IgaXMgbW9y
ZSByZWFzb25hYmxlLgorCisgICAgICAgICogc3RyZXNzL2ludGwtZGF0ZS10aW1lLWZvcm1hdC1k
YXRlLXRpbWUtc3R5bGUtaG91ci1jeWNsZS5qczoKKyAgICAgICAgKHNob3VsZEJlLm8uZm9ybWF0
KToKKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKiBzdHJlc3MvaW50bC1kYXRldGltZWZv
cm1hdC1ob3VyLWN5Y2xlLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAg
KHRocm93Lm5ldy5FcnJvcik6CisgICAgICAgICogdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbDoK
KwogMjAyMC0wOS0xMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtKU0NdIENhbm9uaWNhbGl6ZSAidHJ1ZSIgdW5pY29kZSBleHRlbnNpb24gdHlwZSB2YWx1
ZSB0byAiIgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvaW50bC1kYXRlLXRpbWUtZm9ybWF0
LWRhdGUtdGltZS1zdHlsZS1ob3VyLWN5Y2xlLmpzIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1kYXRl
LXRpbWUtZm9ybWF0LWRhdGUtdGltZS1zdHlsZS1ob3VyLWN5Y2xlLmpzCmluZGV4IGZiZDA2OWQz
YzBiYzdjNTg1NWRiOGU5NGY2MmQxZThhZDM0NjhkZTMuLmY5OTRlYzA3ODkyMmZlYTcxMDBmNzYy
NmMyOTU2MWViYzEzODE3M2UgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2ludGwtZGF0ZS10
aW1lLWZvcm1hdC1kYXRlLXRpbWUtc3R5bGUtaG91ci1jeWNsZS5qcworKysgYi9KU1Rlc3RzL3N0
cmVzcy9pbnRsLWRhdGUtdGltZS1mb3JtYXQtZGF0ZS10aW1lLXN0eWxlLWhvdXItY3ljbGUuanMK
QEAgLTExLDcgKzExLDcgQEAgZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgewog
ICAgICAgICB0aW1lWm9uZTogIlVUQyIsCiAgICAgICAgIGhvdXJDeWNsZTogImgyMyIsCiAgICAg
fSk7Ci0gICAgc2hvdWxkQmUoby5mb3JtYXQobm93MSksIGAwOjAwIEFNYCk7CisgICAgc2hvdWxk
QmUoby5mb3JtYXQobm93MSksIGAwMDowMGApOwogfQogCiB7CkBAIC0yMCw3ICsyMCw3IEBAIGZ1
bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKICAgICAgICAgdGltZVpvbmU6ICJV
VEMiLAogICAgICAgICBob3VyQ3ljbGU6ICJoMjQiLAogICAgIH0pOwotICAgIHNob3VsZEJlKG8u
Zm9ybWF0KG5vdzEpLCBgMjQ6MDAgQU1gKTsKKyAgICBzaG91bGRCZShvLmZvcm1hdChub3cxKSwg
YDI0OjAwYCk7CiB9CiAKIHsKQEAgLTQ3LDcgKzQ3LDcgQEAgZnVuY3Rpb24gc2hvdWxkQmUoYWN0
dWFsLCBleHBlY3RlZCkgewogICAgICAgICB0aW1lWm9uZTogIlVUQyIsCiAgICAgICAgIGhvdXJD
eWNsZTogImgyMyIsCiAgICAgfSk7Ci0gICAgc2hvdWxkQmUoby5mb3JtYXQobm93MiksIGAxMjow
MCBQTWApOworICAgIHNob3VsZEJlKG8uZm9ybWF0KG5vdzIpLCBgMTI6MDBgKTsKIH0KIAogewpA
QCAtNTYsNyArNTYsNyBAQCBmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CiAg
ICAgICAgIHRpbWVab25lOiAiVVRDIiwKICAgICAgICAgaG91ckN5Y2xlOiAiaDI0IiwKICAgICB9
KTsKLSAgICBzaG91bGRCZShvLmZvcm1hdChub3cyKSwgYDEyOjAwIFBNYCk7CisgICAgc2hvdWxk
QmUoby5mb3JtYXQobm93MiksIGAxMjowMGApOwogfQogCiB7CmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3N0cmVzcy9pbnRsLWRhdGV0aW1lZm9ybWF0LWhvdXItY3ljbGUuanMgYi9KU1Rlc3RzL3N0cmVz
cy9pbnRsLWRhdGV0aW1lZm9ybWF0LWhvdXItY3ljbGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzFjYTNlZTgz
ODgzODZjNzYyMmNmMDViZTEyNmI3MDBlZGUyMTM0MwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVz
dHMvc3RyZXNzL2ludGwtZGF0ZXRpbWVmb3JtYXQtaG91ci1jeWNsZS5qcwpAQCAtMCwwICsxLDI0
IEBACisvLyBUaGlzIHRlc3QgaXMgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIGhvdXItY3ljbGUg
YmVoYXZpb3Igb2YgSW50bC5EYXRlVGltZUZvcm1hdC4KKworZnVuY3Rpb24gc2hvdWxkQmUoYWN0
dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoYGV4cGVjdGVkICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHthY3R1YWx9YCk7
Cit9CisKK3sKKyAgICBsZXQgb3B0aW9ucyA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGBkZS11
LWhjLWgxMWAsIHsKKyAgICAgICAgZGF0ZVN0eWxlOiAic2hvcnQiCisgICAgfSkucmVzb2x2ZWRP
cHRpb25zKCk7CisgICAgc2hvdWxkQmUob3B0aW9ucy5ob3VyQ3ljbGUsIHVuZGVmaW5lZCk7Cisg
ICAgc2hvdWxkQmUob3B0aW9ucy5ob3VyMTIsIHVuZGVmaW5lZCk7Cit9Cit7CisgICAgLy8gaHR0
cHM6Ly9naXRodWIuY29tL3RjMzkvZWNtYTQwMi9pc3N1ZXMvNDAyCisgICAgc2hvdWxkQmUobmV3
IEludGwuRGF0ZVRpbWVGb3JtYXQoImVuIiwge2hvdXI6ICJudW1lcmljIn0pLnJlc29sdmVkT3B0
aW9ucygpLmhvdXJDeWNsZSwgImgxMiIpOworICAgIHNob3VsZEJlKG5ldyBJbnRsLkRhdGVUaW1l
Rm9ybWF0KCJlbiIsIHtob3VyMTI6IHRydWUsIGhvdXI6ICJudW1lcmljIn0pLnJlc29sdmVkT3B0
aW9ucygpLmhvdXJDeWNsZSwgImgxMiIpOworICAgIHNob3VsZEJlKG5ldyBJbnRsLkRhdGVUaW1l
Rm9ybWF0KCJlbiIsIHtob3VyMTI6IGZhbHNlLCBob3VyOiAibnVtZXJpYyJ9KS5yZXNvbHZlZE9w
dGlvbnMoKS5ob3VyQ3ljbGUsICJoMjMiKTsKK30KK3sKKyAgICAvLyBodHRwczovL2dpdGh1Yi5j
b20vdGMzOS9lY21hNDAyL3B1bGwvNDM2I2lzc3VlY29tbWVudC02MjgxMDY3ODUKKyAgICBzaG91
bGRCZShuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgiamEiLCB7aG91cjEyOiB0cnVlLCBob3VyOiAi
bnVtZXJpYyJ9KS5yZXNvbHZlZE9wdGlvbnMoKS5ob3VyQ3ljbGUsICJoMTEiKTsKK30KZGlmZiAt
LWdpdCBhL0pTVGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbCBiL0pTVGVzdHMvdGVzdDI2
Mi9leHBlY3RhdGlvbnMueWFtbAppbmRleCA5OTUwMzg5YjA2Mjg1YjE4NzVlM2MzNTExZTYxZTJj
MjA4MzZiYWMwLi40NzhmMjQyNTUwYzc3NThhNDU2NGMzYmE5MTljNGMyNTY5NWQxNjg3IDEwMDY0
NAotLS0gYS9KU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwKKysrIGIvSlNUZXN0cy90
ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sCkBAIC0xNDUzLDggKzE0NTMsOCBAQCB0ZXN0L2J1aWx0
LWlucy9UeXBlZEFycmF5Q29uc3RydWN0b3JzL29mL25ldy1pbnN0YW5jZS11c2luZy1jdXN0b20t
Y3Rvci5qczoKICAgZGVmYXVsdDogJ1R5cGVFcnJvcjogVHlwZWRBcnJheS5vZiByZXF1aXJlcyBp
dHMgdGhpcyBhcmd1bWVudCB0byBzdWJjbGFzcyBhIFR5cGVkQXJyYXkgY29uc3RydWN0b3IgKFRl
c3Rpbmcgd2l0aCBGbG9hdDY0QXJyYXkuKScKICAgc3RyaWN0IG1vZGU6ICdUeXBlRXJyb3I6IFR5
cGVkQXJyYXkub2YgcmVxdWlyZXMgaXRzIHRoaXMgYXJndW1lbnQgdG8gc3ViY2xhc3MgYSBUeXBl
ZEFycmF5IGNvbnN0cnVjdG9yIChUZXN0aW5nIHdpdGggRmxvYXQ2NEFycmF5LiknCiB0ZXN0L2lu
dGw0MDIvRGF0ZVRpbWVGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdC90aW1lZGF0ZXN0eWxlLWVuLmpz
OgotICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBSZXN1bHQgZm9yIGZ1bGwgd2l0aCB7fSBFeHBl
Y3RlZCBTYW1lVmFsdWUowqsxNDoxMjo0NyBQTSBDb29yZGluYXRlZCBVbml2ZXJzYWwgVGltZcK7
LCDCqzE0OjEyOjQ3IENvb3JkaW5hdGVkIFVuaXZlcnNhbCBUaW1lwrspIHRvIGJlIHRydWUnCi0g
IHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBSZXN1bHQgZm9yIGZ1bGwgd2l0aCB7fSBFeHBl
Y3RlZCBTYW1lVmFsdWUowqsxNDoxMjo0NyBQTSBDb29yZGluYXRlZCBVbml2ZXJzYWwgVGltZcK7
LCDCqzE0OjEyOjQ3IENvb3JkaW5hdGVkIFVuaXZlcnNhbCBUaW1lwrspIHRvIGJlIHRydWUnCisg
IGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IFJlc3VsdCBmb3IgZGF0ZT1tZWRpdW0gYW5kIHRpbWU9
ZnVsbCBFeHBlY3RlZCBTYW1lVmFsdWUowqtNYXkgMSwgMTg4NiBhdCAyOjEyOjQ3IFBNIENvb3Jk
aW5hdGVkIFVuaXZlcnNhbCBUaW1lwrssIMKrTWF5IDEsIDE4ODYsIDI6MTI6NDcgUE0gQ29vcmRp
bmF0ZWQgVW5pdmVyc2FsIFRpbWXCuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0
MjYyRXJyb3I6IFJlc3VsdCBmb3IgZGF0ZT1tZWRpdW0gYW5kIHRpbWU9ZnVsbCBFeHBlY3RlZCBT
YW1lVmFsdWUowqtNYXkgMSwgMTg4NiBhdCAyOjEyOjQ3IFBNIENvb3JkaW5hdGVkIFVuaXZlcnNh
bCBUaW1lwrssIMKrTWF5IDEsIDE4ODYsIDI6MTI6NDcgUE0gQ29vcmRpbmF0ZWQgVW5pdmVyc2Fs
IFRpbWXCuykgdG8gYmUgdHJ1ZScKIHRlc3QvaW50bDQwMi9EYXRlVGltZUZvcm1hdC9wcm90b3R5
cGUvZm9ybWF0UmFuZ2UvZW4tVVMuanM6CiAgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVj
dGVkIFNhbWVWYWx1ZSjCqzEvMy8yMDE54oCJ4oCT4oCJMS81LzIwMTnCuywgwqsxLzMvMjAxOSDi
gJMgMS81LzIwMTnCuykgdG8gYmUgdHJ1ZScKICAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6
IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzEvMy8yMDE54oCJ4oCT4oCJMS81LzIwMTnCuywgwqsxLzMv
MjAxOSDigJMgMS81LzIwMTnCuykgdG8gYmUgdHJ1ZScK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408793</attachid>
            <date>2020-09-14 22:30:30 -0700</date>
            <delta_ts>2020-09-15 11:58:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216521-20200914223029.patch</filename>
            <type>text/plain</type>
            <size>34248</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3MDA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
YjgwMjg1NDg2Njc0ZWViOTI2MDIyMTQzYjUzMmUwYjA0Nzk0OWVhLi45ODYyM2MzMTY4ODAwMTk4
OGFkY2NlZmRhYzAyZmYzMzE3OTc2MDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOCBAQAorMjAyMC0wOS0xNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEFwcGx5IEludGwuRGF0ZVRpbWVGb3JtYXQgaG91ci1jeWNsZSBj
b3JyZWN0bHkgd2hlbiB0aW1lU3R5bGUgaXMgdXNlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2NTIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBzcGVjaWZ5aW5nIHRpbWVTdHlsZSBpbiBJbnRs
LkRhdGVUaW1lRm9ybWF0LCB3ZSBuZWVkIHRvIGNoZWNrIHRoYXQgdGhlIGdlbmVyYXRlZCBmb3Jt
YXQgYWxzbyBmb2xsb3dzIHRvIHRoZSBob3VyQ3ljbGUgLyBob3VyMTIgb3B0aW9ucworICAgICAg
ICBzcGVjaWZpZWQgaW4gdGhlIGNvbnN0cnVjdG9yLiBCZWNhdXNlIGRheVBlcmlvZCBjYW4gYmUg
aW5jbHVkZWQgYXV0b21hdGljYWxseSwganVzdCByZXBsYWNpbmcgc3ltYm9scyBhZnRlciBnZW5l
cmF0aW5nIGEgcGF0dGVybiBjYW4gZHVtcCBzdHJhbmdlIHJlc3VsdC4KKyAgICAgICAgRm9yIGV4
YW1wbGUsIHRoZSBnZW5lcmF0ZWQgb25lIGlzIHNvbWV0aGluZyBsaWtlICIwMjoxMjo0NyBQTSBD
b29yZGluYXRlZCBVbml2ZXJzYWwgVGltZSIuIEFuZCB3ZSBhZGp1c3QgdGhlIHBhdHRlcm4gdG8g
bWFrZSBpdCAiMTQ6MTI6NDcgUE0gQ29vcmRpbmF0ZWQgVW5pdmVyc2FsIFRpbWUiCisgICAgICAg
IHdoZW4gaG91ckN5Y2xlIEgyMyAvIEgyNCBpcyBzcGVjaWZpZWQuIEJ1dCB0aGlzIGxvb2tzIHN0
cmFuZ2Ugc2luY2UgZGF5UGVyaW9kICJQTSIgc2hvdWxkIG5vdCBleGlzdCB3aGVuIHVzaW5nIEgy
MyAvIEgyNC4KKworICAgICAgICBJbiB0aGlzIHBhdGNoLCB3ZSByZXZpc2Ugb3VyIGhvdXItY3lj
bGUgaGFuZGxpbmcgaW4gSW50bC5EYXRlVGltZUZvcm1hdC4gV2UgYWxpZ24gb3VyIGJlaGF2aW9y
IHRvIFNwaWRlck1vbmtleSdzIG9uZVsxXSByYXRoZXIgdGhhbiB0aGUgc3BlYydzIG9uZTogd2hl
biBob3VyMTIgaXMgc3BlY2lmaWVkLAorICAgICAgICB3ZSB3aWxsIGp1c3QgdXNlICdIJyBvciAn
aCcgc2tlbGV0b24gYW5kIGRvIG5vdCBlbmZvcmNlIGhvdXItY3ljbGUgYWZ0ZXIgZ2VuZXJhdGlu
ZyBwYXR0ZXJuIGluIGhvdXIxMiBjYXNlLiBJZiBob3VyMTIgaXMgbm90IHNwZWNpZmllZCwgdGhl
biB3ZSB1c2UgJ2gnIG9yICdIJyBza2VsZXRvbgorICAgICAgICBzeW1ib2xzIGJhc2VkIG9uIGhv
dXItY3ljbGUsIGFuZCBsYXRlciB3ZSBtb2RpZnkgdGhlIHBhdHRlcm4gYmFzZWQgb24gaG91ci1j
eWNsZS4gSWYgYm90aCBhcmUgbm90IG9mZmVyZWQsIHdlIHVzZSAnaicgd2hpY2ggYWxsb3dzIElD
VSB0byBwaWNrIHByZWZlcmFibGUgb25lLgorICAgICAgICBUaGlzIGlzIHNsaWdodGx5IGRpZmZl
cmVudCBiZWhhdmlvciB0byB0aGUgc3BlYyAoaGNEZWZhdWx0IGV0Yy4pIGJ1dCB0aGUgc3BlYydz
IGJlaGF2aW9yIGNhbiBjYXVzZSBhIGJpdCBzdXJwcmlzaW5nIHJlc3VsdFsyLDNdLCBhbmQgU3Bp
ZGVyTW9ua2V5IGxpa2UgYmVoYXZpb3Igd2lsbCBiZQorICAgICAgICBpbnRlZ3JhdGVkIGludG8g
dGhlIHNwZWMgZXZlbnR1YWxseVs0XS4KKworICAgICAgICBbMV06IGh0dHBzOi8vZ2l0aHViLmNv
bS90YzM5L2VjbWE0MDIvaXNzdWVzLzQwMiNpc3N1ZWNvbW1lbnQtNjIzNjI4MzIwCisgICAgICAg
IFsyXTogaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvZWNtYTQwMi9pc3N1ZXMvNDAyCisgICAgICAg
IFszXTogaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/
aWQ9MTA0NTc5MQorICAgICAgICBbNF06IGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L2VjbWE0MDIv
cHVsbC80MzYKKworICAgICAgICAqIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcDoKKyAg
ICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0OjpzZXRGb3JtYXRzRnJvbVBhdHRlcm4pOgor
ICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OnBhcnNlSG91ckN5Y2xlKToKKyAgICAg
ICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0Ojpob3VyQ3ljbGVGcm9tUGF0dGVybik6CisgICAg
ICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdDo6cmVwbGFjZUhvdXJDeWNsZUluU2tlbGV0b24p
OgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OnJlcGxhY2VIb3VyQ3ljbGVJblBh
dHRlcm4pOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRl
VGltZUZvcm1hdCk6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdDo6aG91ckN5Y2xl
U3RyaW5nKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0OjpyZXNvbHZlZE9wdGlv
bnMgY29uc3QpOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OmNyZWF0ZURhdGVJ
bnRlcnZhbEZvcm1hdElmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGlt
ZUZvcm1hdC5oOgorCiAyMDIwLTA5LTExICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5j
b20+CiAKICAgICAgICAgW0pTQ10gQ2Fub25pY2FsaXplICJ0cnVlIiB1bmljb2RlIGV4dGVuc2lv
biB0eXBlIHZhbHVlIHRvICIiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcAppbmRleCAyOTc2NDU5ZTE1ZmJhZjMzZTFhYTVlYTI1
NDg4NGRiODhmYmU2OTE0Li40NGM2YTQ0NzViODRlZTI4YjZlMDM0YjY0YjY3YzAxYjRhNzhiNDgy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVG
b3JtYXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGlt
ZUZvcm1hdC5jcHAKQEAgLTMyOSwxOCArMzI5LDYgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6
OnNldEZvcm1hdHNGcm9tUGF0dGVybihjb25zdCBTdHJpbmdWaWV3JiBwYXR0ZXJuKQogICAgICAg
ICAgICAgKytpOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gSWYgaG91ckN5Y2xlIHdhcyBudWxs
LCB0aGlzIHNldHMgaXQgdG8gdGhlIGxvY2FsZSBkZWZhdWx0LgotICAgICAgICBpZiAobV9ob3Vy
Q3ljbGUuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIGlmIChjdXJyZW50Q2hhcmFjdGVyID09ICdo
JykKLSAgICAgICAgICAgICAgICBtX2hvdXJDeWNsZSA9ICJoMTIiX3M7Ci0gICAgICAgICAgICBl
bHNlIGlmIChjdXJyZW50Q2hhcmFjdGVyID09ICdIJykKLSAgICAgICAgICAgICAgICBtX2hvdXJD
eWNsZSA9ICJoMjMiX3M7Ci0gICAgICAgICAgICBlbHNlIGlmIChjdXJyZW50Q2hhcmFjdGVyID09
ICdrJykKLSAgICAgICAgICAgICAgICBtX2hvdXJDeWNsZSA9ICJoMjQiX3M7Ci0gICAgICAgICAg
ICBlbHNlIGlmIChjdXJyZW50Q2hhcmFjdGVyID09ICdLJykKLSAgICAgICAgICAgICAgICBtX2hv
dXJDeWNsZSA9ICJoMTEiX3M7Ci0gICAgICAgIH0KLQogICAgICAgICBzd2l0Y2ggKGN1cnJlbnRD
aGFyYWN0ZXIpIHsKICAgICAgICAgY2FzZSAnRyc6CiAgICAgICAgICAgICBpZiAoY291bnQgPD0g
MykKQEAgLTM5OCwxMiArMzg2LDM0IEBAIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0OjpzZXRGb3Jt
YXRzRnJvbVBhdHRlcm4oY29uc3QgU3RyaW5nVmlldyYgcGF0dGVybikKICAgICAgICAgY2FzZSAn
aCc6CiAgICAgICAgIGNhc2UgJ0gnOgogICAgICAgICBjYXNlICdrJzoKLSAgICAgICAgY2FzZSAn
Syc6CisgICAgICAgIGNhc2UgJ0snOiB7CisgICAgICAgICAgICAvLyBQb3B1bGF0ZSBob3VyQ3lj
bGUgZnJvbSBhY3R1YWxseSBnZW5lcmF0ZWQgcGF0dGVybnMuIEl0IGlzIHBvc3NpYmxlIHRoYXQg
bG9jYWxlIG9yIG9wdGlvbiBpcyBzcGVjaWZ5aW5nIGhvdXJDeWNsZSBleHBsaWNpdGx5LAorICAg
ICAgICAgICAgLy8gYnV0IHRoZSBnZW5lcmF0ZWQgcGF0dGVybiBkb2VzIG5vdCBpbmNsdWRlIHJl
bGF0ZWQgcGFydCBzaW5jZSB0aGUgcGF0dGVybiBkb2VzIG5vdCBpbmNsdWRlIGhvdXJzLgorICAg
ICAgICAgICAgLy8gVGhpcyBpcyB0ZXN0ZWQgaW4gdGVzdDI2Mi90ZXN0L2ludGw0MDIvRGF0ZVRp
bWVGb3JtYXQvcHJvdG90eXBlL3Jlc29sdmVkT3B0aW9ucy9ob3VyQ3ljbGUtZGF0ZVN0eWxlLmpz
IGFuZCBvdXIgc3RyZXNzIHRlc3RzLgorICAgICAgICAgICAgLy8gRXhhbXBsZToKKyAgICAgICAg
ICAgIC8vICAgICBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChgZGUtdS1oYy1oMTFgLCB7CisgICAg
ICAgICAgICAvLyAgICAgICAgIGRhdGVTdHlsZTogImZ1bGwiCisgICAgICAgICAgICAvLyAgICAg
fSkucmVzb2x2ZWRPcHRpb25zKCkuaG91ckN5Y2xlID09PSB1bmRlZmluZWQKKyAgICAgICAgICAg
IHN3aXRjaCAoY3VycmVudENoYXJhY3RlcikgeworICAgICAgICAgICAgY2FzZSAnaCc6CisgICAg
ICAgICAgICAgICAgbV9ob3VyQ3ljbGUgPSBIb3VyQ3ljbGU6OkgxMjsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJ0gnOgorICAgICAgICAgICAgICAgIG1faG91ckN5
Y2xlID0gSG91ckN5Y2xlOjpIMjM7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlICdrJzoKKyAgICAgICAgICAgICAgICBtX2hvdXJDeWNsZSA9IEhvdXJDeWNsZTo6SDI0
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAnSyc6CisgICAgICAg
ICAgICAgICAgbV9ob3VyQ3ljbGUgPSBIb3VyQ3ljbGU6OkgxMTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChjb3VudCA9PSAxKQogICAgICAg
ICAgICAgICAgIG1faG91ciA9IEhvdXI6Ok51bWVyaWM7CiAgICAgICAgICAgICBlbHNlIGlmIChj
b3VudCA9PSAyKQogICAgICAgICAgICAgICAgIG1faG91ciA9IEhvdXI6OlR3b0RpZ2l0OwogICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSAnbSc6CiAgICAgICAgICAg
ICBpZiAoY291bnQgPT0gMSkKICAgICAgICAgICAgICAgICBtX21pbnV0ZSA9IE1pbnV0ZTo6TnVt
ZXJpYzsKQEAgLTQzMSw2ICs0NDEsODQgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OnNldEZv
cm1hdHNGcm9tUGF0dGVybihjb25zdCBTdHJpbmdWaWV3JiBwYXR0ZXJuKQogICAgIH0KIH0KIAor
SW50bERhdGVUaW1lRm9ybWF0OjpIb3VyQ3ljbGUgSW50bERhdGVUaW1lRm9ybWF0OjpwYXJzZUhv
dXJDeWNsZShjb25zdCBTdHJpbmcmIGhvdXJDeWNsZSkKK3sKKyAgICBpZiAoaG91ckN5Y2xlID09
ICJoMTEiX3MpCisgICAgICAgIHJldHVybiBIb3VyQ3ljbGU6OkgxMTsKKyAgICBpZiAoaG91ckN5
Y2xlID09ICJoMTIiX3MpCisgICAgICAgIHJldHVybiBIb3VyQ3ljbGU6OkgxMjsKKyAgICBpZiAo
aG91ckN5Y2xlID09ICJoMjMiX3MpCisgICAgICAgIHJldHVybiBIb3VyQ3ljbGU6OkgyMzsKKyAg
ICBpZiAoaG91ckN5Y2xlID09ICJoMjQiX3MpCisgICAgICAgIHJldHVybiBIb3VyQ3ljbGU6Okgy
NDsKKyAgICByZXR1cm4gSG91ckN5Y2xlOjpOb25lOworfQorCitJbnRsRGF0ZVRpbWVGb3JtYXQ6
OkhvdXJDeWNsZSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmhvdXJDeWNsZUZyb21QYXR0ZXJuKGNvbnN0
IFZlY3RvcjxVQ2hhciwgMzI+JiBwYXR0ZXJuKQoreworICAgIGZvciAoYXV0byBjaGFyYWN0ZXIg
OiBwYXR0ZXJuKSB7CisgICAgICAgIHN3aXRjaCAoY2hhcmFjdGVyKSB7CisgICAgICAgIGNhc2Ug
J0snOgorICAgICAgICAgICAgcmV0dXJuIEhvdXJDeWNsZTo6SDExOworICAgICAgICBjYXNlICdo
JzoKKyAgICAgICAgICAgIHJldHVybiBIb3VyQ3ljbGU6OkgxMjsKKyAgICAgICAgY2FzZSAnSCc6
CisgICAgICAgICAgICByZXR1cm4gSG91ckN5Y2xlOjpIMjM7CisgICAgICAgIGNhc2UgJ2snOgor
ICAgICAgICAgICAgcmV0dXJuIEhvdXJDeWNsZTo6SDI0OworICAgICAgICB9CisgICAgfQorICAg
IHJldHVybiBIb3VyQ3ljbGU6Ok5vbmU7Cit9CisKK3ZvaWQgSW50bERhdGVUaW1lRm9ybWF0Ojpy
ZXBsYWNlSG91ckN5Y2xlSW5Ta2VsZXRvbihWZWN0b3I8VUNoYXIsIDMyPiYgc2tlbGV0b24sIGJv
b2wgaXNIb3VyMTIpCit7CisgICAgVUNoYXIgc2tlbGV0b25DaGFyYWN0ZXIgPSAnSCc7CisgICAg
aWYgKGlzSG91cjEyKQorICAgICAgICBza2VsZXRvbkNoYXJhY3RlciA9ICdoJzsKKyAgICBmb3Ig
KGF1dG8mIGNoYXJhY3RlciA6IHNrZWxldG9uKSB7CisgICAgICAgIHN3aXRjaCAoY2hhcmFjdGVy
KSB7CisgICAgICAgIGNhc2UgJ2gnOgorICAgICAgICBjYXNlICdIJzoKKyAgICAgICAgY2FzZSAn
aic6CisgICAgICAgICAgICBjaGFyYWN0ZXIgPSBza2VsZXRvbkNoYXJhY3RlcjsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIEludGxEYXRlVGltZUZvcm1h
dDo6cmVwbGFjZUhvdXJDeWNsZUluUGF0dGVybihWZWN0b3I8VUNoYXIsIDMyPiYgcGF0dGVybiwg
SG91ckN5Y2xlIGhvdXJDeWNsZSkKK3sKKyAgICBVQ2hhciBob3VyRnJvbUhvdXJDeWNsZSA9ICdI
JzsKKyAgICBzd2l0Y2ggKGhvdXJDeWNsZSkgeworICAgIGNhc2UgSG91ckN5Y2xlOjpIMTE6Cisg
ICAgICAgIGhvdXJGcm9tSG91ckN5Y2xlID0gJ0snOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEhvdXJDeWNsZTo6SDEyOgorICAgICAgICBob3VyRnJvbUhvdXJDeWNsZSA9ICdoJzsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBIb3VyQ3ljbGU6OkgyMzoKKyAgICAgICAgaG91ckZyb21Ib3Vy
Q3ljbGUgPSAnSCc7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSG91ckN5Y2xlOjpIMjQ6Cisg
ICAgICAgIGhvdXJGcm9tSG91ckN5Y2xlID0gJ2snOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEhvdXJDeWNsZTo6Tm9uZToKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGZvciAoYXV0
byYgY2hhcmFjdGVyIDogcGF0dGVybikgeworICAgICAgICBzd2l0Y2ggKGNoYXJhY3Rlcikgewor
ICAgICAgICBjYXNlICdLJzoKKyAgICAgICAgY2FzZSAnaCc6CisgICAgICAgIGNhc2UgJ0gnOgor
ICAgICAgICBjYXNlICdrJzoKKyAgICAgICAgICAgIGNoYXJhY3RlciA9IGhvdXJGcm9tSG91ckN5
Y2xlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cit9CisKIC8vIGh0dHBz
Oi8vdGMzOS5naXRodWIuaW8vZWNtYTQwMi8jc2VjLWluaXRpYWxpemVkYXRldGltZWZvcm1hdAog
dm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGxvY2FsZXMsIEpTVmFsdWUgb3JpZ2luYWxP
cHRpb25zKQogewpAQCAtNDcwLDE3ICs1NTgsMjAgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6
OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAog
CiAgICAgVHJpU3RhdGUgaG91cjEyID0gaW50bEJvb2xlYW5PcHRpb24oZ2xvYmFsT2JqZWN0LCBv
cHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5ob3VyMTIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgYm9vbCBpc0hvdXIxMlVuZGVmaW5lZCA9IChob3VyMTIg
PT0gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGUpOwogCi0gICAgU3RyaW5nIGhvdXJDeWNsZSA9IGlu
dGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5o
b3VyQ3ljbGUsIHsgImgxMSIsICJoMTIiLCAiaDIzIiwgImgyNCIgfSwgImhvdXJDeWNsZSBtdXN0
IGJlIFwiaDExXCIsIFwiaDEyXCIsIFwiaDIzXCIsIG9yIFwiaDI0XCIiLCBudWxscHRyKTsKKyAg
ICBIb3VyQ3ljbGUgaG91ckN5Y2xlID0gaW50bE9wdGlvbjxIb3VyQ3ljbGU+KGdsb2JhbE9iamVj
dCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+aG91ckN5Y2xlLCB7IHsgImgxMSJfcywgSG91
ckN5Y2xlOjpIMTEgfSwgeyAiaDEyIl9zLCBIb3VyQ3ljbGU6OkgxMiB9LCB7ICJoMjMiX3MsIEhv
dXJDeWNsZTo6SDIzIH0sIHsgImgyNCJfcywgSG91ckN5Y2xlOjpIMjQgfSB9LCAiaG91ckN5Y2xl
IG11c3QgYmUgXCJoMTFcIiwgXCJoMTJcIiwgXCJoMjNcIiwgb3IgXCJoMjRcIiJfcywgSG91ckN5
Y2xlOjpOb25lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAg
IGlmIChpc0hvdXIxMlVuZGVmaW5lZCkgewotICAgICAgICAvLyBTZXQgaG91cjEyIGhlcmUgdG8g
c2ltcGxpZnkgaG91ciBsb2dpYyBsYXRlci4KLSAgICAgICAgaG91cjEyID0gdHJpU3RhdGUoaG91
ckN5Y2xlID09ICJoMTEiIHx8IGhvdXJDeWNsZSA9PSAiaDEyIik7Ci0gICAgICAgIGlmICghaG91
ckN5Y2xlLmlzTnVsbCgpKQotICAgICAgICAgICAgbG9jYWxlT3B0aW9uc1tzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oUmVsZXZhbnRFeHRlbnNpb25LZXk6OkhjKV0gPSBob3VyQ3ljbGU7Ci0gICAgfSBl
bHNlCisgICAgaWYgKGhvdXIxMiA9PSBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZSkgeworICAgICAg
ICBpZiAoaG91ckN5Y2xlICE9IEhvdXJDeWNsZTo6Tm9uZSkKKyAgICAgICAgICAgIGxvY2FsZU9w
dGlvbnNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJlbGV2YW50RXh0ZW5zaW9uS2V5OjpIYyldID0g
U3RyaW5nKGhvdXJDeWNsZVN0cmluZyhob3VyQ3ljbGUpKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICAvLyBJZiB0aGVyZSBpcyBob3VyMTIsIGhvdXJDeWNsZSBpcyBpZ25vcmVkLgorICAgICAgICAv
LyBXZSBhcmUgc2V0dGluZyBudWxsIFN0cmluZyBleHBsaWNpdGx5IGhlcmUgKGxvY2FsZU9wdGlv
bnMnIGVudHJpZXMgYXJlIE9wdGlvbmFsPFN0cmluZz4pLiBUaGlzIGxlYWRzIHVzIHRvIHVzZSBI
b3VyQ3ljbGU6Ok5vbmUgbGF0ZXIuCisgICAgICAgIC8vCisgICAgICAgIC8vIDE0LiBJZiBob3Vy
MTIgaXMgbm90IHVuZGVmaW5lZCwgdGhlbgorICAgICAgICAvLyAgICAgYS4gTGV0IGhvdXJDeWNs
ZSBiZSBudWxsLgogICAgICAgICBsb2NhbGVPcHRpb25zW3N0YXRpY19jYXN0PHVuc2lnbmVkPihS
ZWxldmFudEV4dGVuc2lvbktleTo6SGMpXSA9IFN0cmluZygpOworICAgIH0KIAogICAgIGNvbnN0
IEhhc2hTZXQ8U3RyaW5nPiYgYXZhaWxhYmxlTG9jYWxlcyA9IGludGxEYXRlVGltZUZvcm1hdEF2
YWlsYWJsZUxvY2FsZXMoKTsKICAgICBhdXRvIHJlc29sdmVkID0gcmVzb2x2ZUxvY2FsZShnbG9i
YWxPYmplY3QsIGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMsIGxvY2FsZU1hdGNo
ZXIsIGxvY2FsZU9wdGlvbnMsIHsgUmVsZXZhbnRFeHRlbnNpb25LZXk6OkNhLCBSZWxldmFudEV4
dGVuc2lvbktleTo6SGMsIFJlbGV2YW50RXh0ZW5zaW9uS2V5OjpOdSB9LCBsb2NhbGVEYXRhKTsK
QEAgLTQ5OSw3ICs1OTAsNyBAQCB2b2lkIEludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZURh
dGVUaW1lRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgZWxzZSBpZiAo
bV9jYWxlbmRhciA9PSAiZXRoaW9hYSIpCiAgICAgICAgIG1fY2FsZW5kYXIgPSAiZXRoaW9waWMt
YW1ldGUtYWxlbSJfczsKIAotICAgIG1faG91ckN5Y2xlID0gcmVzb2x2ZWQuZXh0ZW5zaW9uc1tz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVsZXZhbnRFeHRlbnNpb25LZXk6OkhjKV07CisgICAgaG91
ckN5Y2xlID0gcGFyc2VIb3VyQ3ljbGUocmVzb2x2ZWQuZXh0ZW5zaW9uc1tzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oUmVsZXZhbnRFeHRlbnNpb25LZXk6OkhjKV0pOwogICAgIG1fbnVtYmVyaW5nU3lz
dGVtID0gcmVzb2x2ZWQuZXh0ZW5zaW9uc1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVsZXZhbnRF
eHRlbnNpb25LZXk6Ok51KV07CiAgICAgbV9kYXRhTG9jYWxlID0gcmVzb2x2ZWQuZGF0YUxvY2Fs
ZTsKICAgICBDU3RyaW5nIGRhdGFMb2NhbGVXaXRoRXh0ZW5zaW9ucyA9IG1ha2VTdHJpbmcobV9k
YXRhTG9jYWxlLCAiLXUtY2EtIiwgbV9jYWxlbmRhciwgIi1udS0iLCBtX251bWJlcmluZ1N5c3Rl
bSkudXRmOCgpOwpAQCAtNjA5LDI1ICs3MDAsNTYgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6
OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAog
CiAgICAgSG91ciBob3VyID0gaW50bE9wdGlvbjxIb3VyPihnbG9iYWxPYmplY3QsIG9wdGlvbnMs
IHZtLnByb3BlcnR5TmFtZXMtPmhvdXIsIHsgeyAiMi1kaWdpdCJfcywgSG91cjo6VHdvRGlnaXQg
fSwgeyAibnVtZXJpYyJfcywgSG91cjo6TnVtZXJpYyB9IH0sICJob3VyIG11c3QgYmUgXCIyLWRp
Z2l0XCIgb3IgXCJudW1lcmljXCIiX3MsIEhvdXI6Ok5vbmUpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgc3dpdGNoIChob3VyKSB7Ci0gICAgY2FzZSBIb3Vy
OjpUd29EaWdpdDoKLSAgICAgICAgaWYgKGlzSG91cjEyVW5kZWZpbmVkICYmIG1faG91ckN5Y2xl
LmlzTnVsbCgpKQotICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoImpq
Iik7Ci0gICAgICAgIGVsc2UgaWYgKGhvdXIxMiA9PSBUcmlTdGF0ZTo6VHJ1ZSkKLSAgICAgICAg
ICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJoaCIpOwotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiSEgiKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBIb3VyOjpOdW1lcmljOgotICAgICAgICBpZiAoaXNIb3VyMTJVbmRl
ZmluZWQgJiYgbV9ob3VyQ3ljbGUuaXNOdWxsKCkpCi0gICAgICAgICAgICBza2VsZXRvbkJ1aWxk
ZXIuYXBwZW5kKCdqJyk7Ci0gICAgICAgIGVsc2UgaWYgKGhvdXIxMiA9PSBUcmlTdGF0ZTo6VHJ1
ZSkKLSAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJ2gnKTsKLSAgICAgICAgZWxz
ZQotICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnSCcpOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIEhvdXI6Ok5vbmU6Ci0gICAgICAgIGJyZWFrOworICAgIHsKKyAgICAgICAg
Ly8gU3BlY2lmaWNhbGx5LCB0aGlzIGhvdXItY3ljbGUgLyBob3VyMTIgYmVoYXZpb3IgaXMgc2xp
Z2h0bHkgZGlmZmVyZW50IGZyb20gdGhlIHNwZWMuCisgICAgICAgIC8vIEJ1dCB0aGUgc3BlYyBi
ZWhhdmlvciBpcyBrbm93biB0byBjYXVzZSBzdXJwcmlzaW5nIGJlaGF2aW9yc1sxLDJdLCBhbmQg
dGhlIHNwZWMgY2hhbmdlIGlzIG9uZ29pbmdbM10uCisgICAgICAgIC8vIFdlIGltcGxlbWVudCBT
cGlkZXJNb25rZXkncyBiZWhhdmlvciBkZXNjcmliZWQgaW4gWzRdLgorICAgICAgICAvLworICAg
ICAgICAvLyAgICAgPiBObyBvcHRpb24gcHJlc2VudDogImoiCisgICAgICAgIC8vICAgICA+IGhv
dXIxMiA9IHRydWU6ICJoIgorICAgICAgICAvLyAgICAgPiBob3VyMTIgPSBmYWxzZTogIkgiCisg
ICAgICAgIC8vICAgICA+IGhvdXJDeWNsZSA9IGgxMTogImgiLCBwbHVzIG1vZGlmeWluZyB0aGUg
cmVzb2x2ZWQgcGF0dGVybiB0byB1c2UgdGhlIGhvdXIgc3ltYm9sICJLIi4KKyAgICAgICAgLy8g
ICAgID4gaG91ckN5Y2xlID0gaDEyOiAiaCIsIHBsdXMgbW9kaWZ5aW5nIHRoZSByZXNvbHZlZCBw
YXR0ZXJuIHRvIHVzZSB0aGUgaG91ciBzeW1ib2wgImgiLgorICAgICAgICAvLyAgICAgPiBob3Vy
Q3ljbGUgPSBoMjM6ICJIIiwgcGx1cyBtb2RpZnlpbmcgdGhlIHJlc29sdmVkIHBhdHRlcm4gdG8g
dXNlIHRoZSBob3VyIHN5bWJvbCAiSCIuCisgICAgICAgIC8vICAgICA+IGhvdXJDeWNsZSA9IGgy
NDogIkgiLCBwbHVzIG1vZGlmeWluZyB0aGUgcmVzb2x2ZWQgcGF0dGVybiB0byB1c2UgdGhlIGhv
dXIgc3ltYm9sICJrIi4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gWzFdOiBodHRwczovL2dpdGh1
Yi5jb20vdGMzOS9lY21hNDAyL2lzc3Vlcy80MDIKKyAgICAgICAgLy8gWzJdOiBodHRwczovL2J1
Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD0xMDQ1NzkxCisgICAg
ICAgIC8vIFszXTogaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvZWNtYTQwMi9wdWxsLzQzNgorICAg
ICAgICAvLyBbNF06IGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L2VjbWE0MDIvaXNzdWVzLzQwMiNp
c3N1ZWNvbW1lbnQtNjIzNjI4MzIwCisgICAgICAgIFVDaGFyIHNrZWxldG9uQ2hhcmFjdGVyID0g
J2onOworICAgICAgICBpZiAoaG91cjEyID09IFRyaVN0YXRlOjpJbmRldGVybWluYXRlKSB7Cisg
ICAgICAgICAgICBzd2l0Y2ggKGhvdXJDeWNsZSkgeworICAgICAgICAgICAgY2FzZSBIb3VyQ3lj
bGU6Ok5vbmU6CisgICAgICAgICAgICAgICAgc2tlbGV0b25DaGFyYWN0ZXIgPSAnaic7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEhvdXJDeWNsZTo6SDExOgorICAg
ICAgICAgICAgY2FzZSBIb3VyQ3ljbGU6OkgxMjoKKyAgICAgICAgICAgICAgICBza2VsZXRvbkNo
YXJhY3RlciA9ICdoJzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
SG91ckN5Y2xlOjpIMjM6CisgICAgICAgICAgICBjYXNlIEhvdXJDeWNsZTo6SDI0OgorICAgICAg
ICAgICAgICAgIHNrZWxldG9uQ2hhcmFjdGVyID0gJ0gnOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKGhvdXIx
MiA9PSBUcmlTdGF0ZTo6VHJ1ZSkKKyAgICAgICAgICAgICAgICBza2VsZXRvbkNoYXJhY3RlciA9
ICdoJzsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBza2VsZXRvbkNoYXJhY3Rl
ciA9ICdIJzsKKyAgICAgICAgfQorCisgICAgICAgIHN3aXRjaCAoaG91cikgeworICAgICAgICBj
YXNlIEhvdXI6OlR3b0RpZ2l0OgorICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZChz
a2VsZXRvbkNoYXJhY3Rlcik7CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKHNr
ZWxldG9uQ2hhcmFjdGVyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEhvdXI6
Ok51bWVyaWM6CisgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKHNrZWxldG9uQ2hh
cmFjdGVyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEhvdXI6Ok5vbmU6Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChPcHRpb25zOjp1
c2VJbnRsRGF0ZVRpbWVGb3JtYXREYXlQZXJpb2QoKSkgewpAQCAtNzAxLDcgKzgyMywxOCBAQCB2
b2lkIEludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgbV90aW1lU3R5bGUgPSBpbnRsT3B0aW9uPERhdGVU
aW1lU3R5bGU+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+dGltZVN0
eWxlLCB7IHsgImZ1bGwiX3MsIERhdGVUaW1lU3R5bGU6OkZ1bGwgfSwgeyAibG9uZyJfcywgRGF0
ZVRpbWVTdHlsZTo6TG9uZyB9LCB7ICJtZWRpdW0iX3MsIERhdGVUaW1lU3R5bGU6Ok1lZGl1bSB9
LCB7ICJzaG9ydCJfcywgRGF0ZVRpbWVTdHlsZTo6U2hvcnQgfSB9LCAidGltZVN0eWxlIG11c3Qg
YmUgXCJmdWxsXCIsIFwibG9uZ1wiLCBcIm1lZGl1bVwiLCBvciBcInNob3J0XCIiX3MsIERhdGVU
aW1lU3R5bGU6Ok5vbmUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7
CiAKLSAgICBib29sIGNhbkluY2x1ZGVIb3VyID0gdHJ1ZTsKKworICAgIGF1dG8gcGF0dGVybkZy
b21Ta2VsZXRvbiA9IFsmXShjb25zdCBVQ2hhciogc2tlbGV0b24sIHVuc2lnbmVkIHNrZWxldG9u
U2l6ZSwgVmVjdG9yPFVDaGFyLCAzMj4mIHBhdHRlcm5CdWZmZXIsIFVFcnJvckNvZGUmIHN0YXR1
cykgeworICAgICAgICAvLyBBbHdheXMgdXNlIElDVSBkYXRlIGZvcm1hdCBnZW5lcmF0b3IsIHJh
dGhlciB0aGFuIG91ciBvd24gcGF0dGVybiBsaXN0IGFuZCBtYXRjaGVyLgorICAgICAgICBhdXRv
IGdlbmVyYXRvciA9IHN0ZDo6dW5pcXVlX3B0cjxVRGF0ZVRpbWVQYXR0ZXJuR2VuZXJhdG9yLCBJ
Q1VEZWxldGVyPHVkYXRwZ19jbG9zZT4+KHVkYXRwZ19vcGVuKGRhdGFMb2NhbGVXaXRoRXh0ZW5z
aW9ucy5kYXRhKCksICZzdGF0dXMpKTsKKyAgICAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNp
bmdGdW5jdGlvbih1ZGF0cGdfZ2V0QmVzdFBhdHRlcm5XaXRoT3B0aW9ucywgZ2VuZXJhdG9yLmdl
dCgpLCBza2VsZXRvbiwgc2tlbGV0b25TaXplLCBVREFUUEdfTUFUQ0hfSE9VUl9GSUVMRF9MRU5H
VEgsIHBhdHRlcm5CdWZmZXIpOworICAgICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgfTsKKwogICAgIFZlY3RvcjxVQ2hhciwgMzI+IHBhdHRlcm5C
dWZmZXI7CiAgICAgaWYgKG1fZGF0ZVN0eWxlICE9IERhdGVUaW1lU3R5bGU6Ok5vbmUgfHwgbV90
aW1lU3R5bGUgIT0gRGF0ZVRpbWVTdHlsZTo6Tm9uZSkgewogICAgICAgICAvLyAzMC4gRm9yIGVh
Y2ggcm93IGluIFRhYmxlIDEsIGV4Y2VwdCB0aGUgaGVhZGVyIHJvdywgZG8KQEAgLTcxNCwxMiAr
ODQ3LDYgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVGltZUZvcm1h
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKLSAgICAgICAgLy8gSWYgdGltZVN0eWxlIGlzIG5vdCBzcGVjaWZpZWQsIG1faG91
ckN5Y2xlIGRvZXMgbm90IG1hdHRlci4gTGV0J3Mgc2tpcCBlbmZvcmNpbmcgc3RlcC4KLSAgICAg
ICAgaWYgKG1fdGltZVN0eWxlID09IERhdGVUaW1lU3R5bGU6Ok5vbmUpIHsKLSAgICAgICAgICAg
IGNhbkluY2x1ZGVIb3VyID0gZmFsc2U7Ci0gICAgICAgICAgICBtX2hvdXJDeWNsZSA9IFN0cmlu
ZygpOwotICAgICAgICB9Ci0KICAgICAgICAgYXV0byBwYXJzZVVEYXRlRm9ybWF0U3R5bGUgPSBb
XShEYXRlVGltZVN0eWxlIHN0eWxlKSB7CiAgICAgICAgICAgICBzd2l0Y2ggKHN0eWxlKSB7CiAg
ICAgICAgICAgICBjYXNlIERhdGVUaW1lU3R5bGU6OkZ1bGw6CkBAIC03MzgsNyArODY1LDcgQEAg
dm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LAogCiAgICAgICAgIC8vIFdlIGNhbm5vdCB1c2UgdGhpcyBV
RGF0ZUZvcm1hdCBkaXJlY3RseSB5ZXQgYmVjYXVzZSB3ZSBuZWVkIHRvIGVuZm9yY2Ugc3BlY2lm
aWVkIGhvdXJDeWNsZS4KICAgICAgICAgLy8gRmlyc3QsIHdlIGNyZWF0ZSBVRGF0ZUZvcm1hdCB2
aWEgZGF0ZVN0eWxlIGFuZCB0aW1lU3R5bGUuIEFuZCB0aGVuIGNvbnZlcnQgaXQgdG8gcGF0dGVy
biBzdHJpbmcuCi0gICAgICAgIC8vIEFmdGVyIHVwZGF0aW5nIHRoaXMgcGF0dGVybiBzdHJpbmcg
d2l0aCBtX2hvdXJDeWNsZSwgd2UgY3JlYXRlIGEgZmluYWwgVURhdGVGb3JtYXQgd2l0aCB0aGUg
dXBkYXRlZCBwYXR0ZXJuIHN0cmluZy4KKyAgICAgICAgLy8gQWZ0ZXIgdXBkYXRpbmcgdGhpcyBw
YXR0ZXJuIHN0cmluZyB3aXRoIGhvdXJDeWNsZSwgd2UgY3JlYXRlIGEgZmluYWwgVURhdGVGb3Jt
YXQgd2l0aCB0aGUgdXBkYXRlZCBwYXR0ZXJuIHN0cmluZy4KICAgICAgICAgVUVycm9yQ29kZSBz
dGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgICAgIFN0cmluZ1ZpZXcgdGltZVpvbmVWaWV3KG1f
dGltZVpvbmUpOwogICAgICAgICBhdXRvIGRhdGVGb3JtYXRGcm9tU3R5bGUgPSBzdGQ6OnVuaXF1
ZV9wdHI8VURhdGVGb3JtYXQsIFVEYXRlRm9ybWF0RGVsZXRlcj4odWRhdF9vcGVuKHBhcnNlVURh
dGVGb3JtYXRTdHlsZShtX3RpbWVTdHlsZSksIHBhcnNlVURhdGVGb3JtYXRTdHlsZShtX2RhdGVT
dHlsZSksIGRhdGFMb2NhbGVXaXRoRXh0ZW5zaW9ucy5kYXRhKCksIHRpbWVab25lVmlldy51cGNv
bnZlcnRlZENoYXJhY3RlcnMoKSwgdGltZVpvbmVWaWV3Lmxlbmd0aCgpLCBudWxscHRyLCAtMSwg
JnN0YXR1cykpOwpAQCAtNzUyLDgyICs4NzksNTkgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6
OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAog
ICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0
byBpbml0aWFsaXplIERhdGVUaW1lRm9ybWF0Il9zKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIElmIGhvdXIgaXMgbm90IHNwZWNpZmll
ZCwgbV9ob3VyQ3ljbGUgZG9lcyBub3QgbWF0dGVyLiBMZXQncyBza2lwIGVuZm9yY2luZyBzdGVw
LgotICAgICAgICBpZiAoaG91ciA9PSBIb3VyOjpOb25lKSB7Ci0gICAgICAgICAgICBjYW5JbmNs
dWRlSG91ciA9IGZhbHNlOwotICAgICAgICAgICAgbV9ob3VyQ3ljbGUgPSBTdHJpbmcoKTsKLSAg
ICAgICAgfQogCi0gICAgICAgIC8vIEFsd2F5cyB1c2UgSUNVIGRhdGUgZm9ybWF0IGdlbmVyYXRv
ciwgcmF0aGVyIHRoYW4gb3VyIG93biBwYXR0ZXJuIGxpc3QgYW5kIG1hdGNoZXIuCi0gICAgICAg
IFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgICAgICBhdXRvKiBnZW5lcmF0
b3IgPSB1ZGF0cGdfb3BlbihkYXRhTG9jYWxlV2l0aEV4dGVuc2lvbnMuZGF0YSgpLCAmc3RhdHVz
KTsKLSAgICAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAgICAgICB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgRGF0ZVRp
bWVGb3JtYXQiX3MpOwotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAvLyBJdCBpcyBwb3Nz
aWJsZSB0aGF0IHRpbWVTdHlsZSBpbmNsdWRlcyBkYXlQZXJpb2QsIHdoaWNoIGlzIHNlbnNpdGl2
ZSB0byBob3VyLWN5Y2xlLgorICAgICAgICAvLyBJZiBkYXlQZXJpb2QgaXMgaW5jbHVkZWQsIGp1
c3QgcmVwbGFjaW5nIGhvdXIgYmFzZWQgb24gaG91ckN5Y2xlIC8gaG91cjEyIHByb2R1Y2VzIHN0
cmFuZ2UgcmVzdWx0cy4KKyAgICAgICAgLy8gTGV0J3MgY29uc2lkZXIgYWJvdXQgdGhlIGV4YW1w
bGUuIFRoZSBmb3JtYXR0ZWQgcmVzdWx0IGxvb2tzIGxpa2UgIjAyOjEyOjQ3IFBNIENvb3JkaW5h
dGVkIFVuaXZlcnNhbCBUaW1lIgorICAgICAgICAvLyBJZiB3ZSBzaW1wbHkgcmVwbGFjZSAwMiB0
byAxNCwgdGhpcyBiZWNvbWVzICIxNDoxMjo0NyBQTSBDb29yZGluYXRlZCBVbml2ZXJzYWwgVGlt
ZSIsIHRoaXMgbG9va3Mgc3RyYW5nZSBzaW5jZSAiUE0iIGlzIHVubmVjZXNzYXJ5IQorICAgICAg
ICAvLworICAgICAgICAvLyBJZiB0aGUgZ2VuZXJhdGVkIHBhdHRlcm4ncyBob3VyMTIgZG9lcyBu
b3QgbWF0Y2ggYWdhaW5zdCB0aGUgb3B0aW9uJ3Mgb25lLCB3ZSByZXRyaWV2ZSBza2VsZXRvbiBm
cm9tIHRoZSBwYXR0ZXJuLCBlbmZvcmNpbmcgaG91ci1jeWNsZSwKKyAgICAgICAgLy8gYW5kIHJl
LWdlbmVyYXRpbmcgdGhlIGJlc3QgcGF0dGVybiBmcm9tIHRoZSBtb2RpZmllZCBza2VsZXRvbi4g
SUNVIHdpbGwgbG9vayBpbnRvIHRoZSBnZW5lcmF0ZWQgc2tlbGV0b24sIGFuZCBwaWNrIHRoZSBi
ZXN0IGZvcm1hdCBmb3IgdGhlIHJlcXVlc3QuCisgICAgICAgIC8vIFdlIGRvIG5vdCBjYXJlIGFi
b3V0IGgxMSB2LnMuIGgxMiBhbmQgaDIzIHYucy4gaDI0IGRpZmZlcmVuY2UgaGVyZSBzaW5jZSB0
aGlzIHdpbGwgYmUgbGF0ZXIgYWRqdXN0ZWQgYnkgcmVwbGFjZUhvdXJDeWNsZUluUGF0dGVybi4K
KyAgICAgICAgLy8KKyAgICAgICAgLy8gdGVzdDI2Mi90ZXN0L2ludGw0MDIvRGF0ZVRpbWVGb3Jt
YXQvcHJvdG90eXBlL2Zvcm1hdC90aW1lZGF0ZXN0eWxlLWVuLmpzIGluY2x1ZGVzIHRoZSB0ZXN0
IGZvciB0aGlzIGJlaGF2aW9yLgorICAgICAgICBpZiAobV90aW1lU3R5bGUgIT0gRGF0ZVRpbWVT
dHlsZTo6Tm9uZSAmJiAoaG91ckN5Y2xlICE9IEhvdXJDeWNsZTo6Tm9uZSB8fCBob3VyMTIgIT0g
VHJpU3RhdGU6OkluZGV0ZXJtaW5hdGUpKSB7CisgICAgICAgICAgICBhdXRvIGlzSG91cjEyID0g
W10oSG91ckN5Y2xlIGhvdXJDeWNsZSkgeworICAgICAgICAgICAgICAgIHJldHVybiBob3VyQ3lj
bGUgPT0gSG91ckN5Y2xlOjpIMTEgfHwgaG91ckN5Y2xlID09IEhvdXJDeWNsZTo6SDEyOworICAg
ICAgICAgICAgfTsKKyAgICAgICAgICAgIGJvb2wgc3BlY2lmaWVkSG91cjEyID0gZmFsc2U7Cisg
ICAgICAgICAgICAvLyBJZiBob3VyMTIgaXMgc3BlY2lmaWVkLCB3ZSBwcmVmZXIgaXQgYW5kIGln
bm9yZSBob3VyQ3ljbGUuCisgICAgICAgICAgICBpZiAoaG91cjEyICE9IFRyaVN0YXRlOjpJbmRl
dGVybWluYXRlKQorICAgICAgICAgICAgICAgIHNwZWNpZmllZEhvdXIxMiA9IGhvdXIxMiA9PSBU
cmlTdGF0ZTo6VHJ1ZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzcGVjaWZp
ZWRIb3VyMTIgPSBpc0hvdXIxMihob3VyQ3ljbGUpOworICAgICAgICAgICAgSG91ckN5Y2xlIGV4
dHJhY3RlZEhvdXJDeWNsZSA9IGhvdXJDeWNsZUZyb21QYXR0ZXJuKHBhdHRlcm5CdWZmZXIpOwor
ICAgICAgICAgICAgaWYgKGV4dHJhY3RlZEhvdXJDeWNsZSAhPSBIb3VyQ3ljbGU6Ok5vbmUgJiYg
aXNIb3VyMTIoZXh0cmFjdGVkSG91ckN5Y2xlKSAhPSBzcGVjaWZpZWRIb3VyMTIpIHsKKyAgICAg
ICAgICAgICAgICBWZWN0b3I8VUNoYXIsIDMyPiBza2VsZXRvbjsKKyAgICAgICAgICAgICAgICBh
dXRvIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1ZGF0cGdfZ2V0U2tlbGV0
b24sIG51bGxwdHIsIHBhdHRlcm5CdWZmZXIuZGF0YSgpLCBwYXR0ZXJuQnVmZmVyLnNpemUoKSwg
c2tlbGV0b24pOworICAgICAgICAgICAgICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgeworICAg
ICAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFp
bGVkIHRvIGluaXRpYWxpemUgRGF0ZUludGVydmFsRm9ybWF0Il9zKTsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXBsYWNl
SG91ckN5Y2xlSW5Ta2VsZXRvbihza2VsZXRvbiwgc3BlY2lmaWVkSG91cjEyKTsKKyAgICAgICAg
ICAgICAgICBkYXRhTG9nTG5JZihJbnRsRGF0ZVRpbWVGb3JtYXRJbnRlcm5hbDo6dmVyYm9zZSwg
InJlcGxhY2VkOigiLCBTdHJpbmdWaWV3KHNrZWxldG9uLmRhdGEoKSwgc2tlbGV0b24uc2l6ZSgp
KSwgIikiKTsKKworICAgICAgICAgICAgICAgIHBhdHRlcm5CdWZmZXIuY2xlYXIoKTsKKyAgICAg
ICAgICAgICAgICBwYXR0ZXJuRnJvbVNrZWxldG9uKHNrZWxldG9uLmRhdGEoKSwgc2tlbGV0b24u
c2l6ZSgpLCBwYXR0ZXJuQnVmZmVyLCBzdGF0dXMpOworICAgICAgICAgICAgICAgIGlmIChVX0ZB
SUxVUkUoc3RhdHVzKSkgeworICAgICAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgRGF0ZUludGVydmFsRm9ybWF0
Il9zKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KICAgICAgICAgfQotCisgICAgfSBlbHNlIHsKKyAgICAgICAgVUVycm9yQ29k
ZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgICAgIFN0cmluZyBza2VsZXRvbiA9IHNrZWxl
dG9uQnVpbGRlci50b1N0cmluZygpOwotICAgICAgICBTdHJpbmdWaWV3IHNrZWxldG9uVmlldyhz
a2VsZXRvbik7Ci0gICAgICAgIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1
ZGF0cGdfZ2V0QmVzdFBhdHRlcm5XaXRoT3B0aW9ucywgZ2VuZXJhdG9yLCBza2VsZXRvblZpZXcu
dXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCkuZ2V0KCksIHNrZWxldG9uVmlldy5sZW5ndGgoKSwgVURB
VFBHX01BVENIX0hPVVJfRklFTERfTEVOR1RILCBwYXR0ZXJuQnVmZmVyKTsKLSAgICAgICAgdWRh
dHBnX2Nsb3NlKGdlbmVyYXRvcik7CisgICAgICAgIHBhdHRlcm5Gcm9tU2tlbGV0b24oU3RyaW5n
Vmlldyhza2VsZXRvbikudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCkuZ2V0KCksIHNrZWxldG9uLmxl
bmd0aCgpLCBwYXR0ZXJuQnVmZmVyLCBzdGF0dXMpOwogICAgICAgICBpZiAoVV9GQUlMVVJFKHN0
YXR1cykpIHsKICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBEYXRlVGltZUZvcm1hdCJfcyk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvLyBFbmZvcmNlIG91ciBob3VyQ3ljbGUs
IHJlcGxhY2luZyBob3VyIGNoYXJhY3RlcnMgaW4gcGF0dGVybi4gSUNVIGNhbiBwaWNrIGZvcm1h
dCB3aGljaCBkb2VzIG5vdCBhZ3JlZSB3aXRoIHNwZWNpZmllZCBob3VyQ3ljbGUuCi0gICAgLy8g
VGhpcyBzdGVwIG1vZGlmaWVzIGdlbmVyYXRlZCBwYXR0ZXJuIHRvIHVzZSBzcGVjaWZpZWQgaG91
ckN5Y2xlLCBhbmQgaXQgaXMgc3BlY2lmaWVkIGluIDEuMS4xIEluaXRpYWxpemVEYXRlVGltZUZv
cm1hdCBzdGVwIDMzLgotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgY2FjaGUgYGhvdXJDeWNsZURl
ZmF1bHRgIHZhbHVlIG9idGFpbmVkIGJ5IGdlbmVyYXRpbmcgImpqbW0iIHBhdHRlcm4gZnJvbSBV
RGF0ZVRpbWVQYXR0ZXJuR2VuZXJhdG9yLgotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTM0NTkKLSAgICBpZiAoY2FuSW5jbHVkZUhvdXIpIHsKLSAgICAg
ICAgYm9vbCBoYXNIb3VyID0gZmFsc2U7Ci0gICAgICAgIGlmICghbV9ob3VyQ3ljbGUuaXNOdWxs
KCkgfHwgIWlzSG91cjEyVW5kZWZpbmVkKSB7Ci0gICAgICAgICAgICBVQ2hhciBob3VyRnJvbUhv
dXJDeWNsZSA9ICdIJzsgLy8gSDIzCi0gICAgICAgICAgICBpZiAobV9ob3VyQ3ljbGUgPT0gImgx
MSIpCi0gICAgICAgICAgICAgICAgaG91ckZyb21Ib3VyQ3ljbGUgPSAnSyc7Ci0gICAgICAgICAg
ICBlbHNlIGlmIChtX2hvdXJDeWNsZSA9PSAiaDEyIikKLSAgICAgICAgICAgICAgICBob3VyRnJv
bUhvdXJDeWNsZSA9ICdoJzsKLSAgICAgICAgICAgIGVsc2UgaWYgKG1faG91ckN5Y2xlID09ICJo
MjQiKQotICAgICAgICAgICAgICAgIGhvdXJGcm9tSG91ckN5Y2xlID0gJ2snOwotCi0gICAgICAg
ICAgICBib29sIGlzRXNjYXBlZCA9IGZhbHNlOwotICAgICAgICAgICAgZm9yIChhdXRvJiBjIDog
cGF0dGVybkJ1ZmZlcikgewotICAgICAgICAgICAgICAgIGlmIChjID09ICdcJycpCi0gICAgICAg
ICAgICAgICAgICAgIGlzRXNjYXBlZCA9ICFpc0VzY2FwZWQ7Ci0gICAgICAgICAgICAgICAgZWxz
ZSBpZiAoIWlzRXNjYXBlZCAmJiAoYyA9PSAnaCcgfHwgYyA9PSAnSCcgfHwgYyA9PSAnaycgfHwg
YyA9PSAnSycpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoYykgewotICAgICAgICAg
ICAgICAgICAgICBjYXNlICdLJzoKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAnSCc6IHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0hvdXIxMlVuZGVmaW5lZCkKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjID0gaG91ckZyb21Ib3VyQ3ljbGU7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBlbHNlIGlmIChob3VyMTIgPT0gVHJpU3RhdGU6OlRydWUpCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYyA9ICdLJzsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gJ0gnOwotICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgY2Fz
ZSAnaCc6Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2snOiB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoaXNIb3VyMTJVbmRlZmluZWQpCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYyA9IGhvdXJGcm9tSG91ckN5Y2xlOwotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBp
ZiAoaG91cjEyID09IFRyaVN0YXRlOjpUcnVlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGMgPSAnaCc7Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYyA9ICdrJzsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgICAgICBoYXNIb3VyID0gdHJ1ZTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFoYXNIb3VyKQotICAg
ICAgICAgICAgbV9ob3VyQ3ljbGUgPSBTdHJpbmcoKTsKLSAgICB9CisgICAgLy8gQWZ0ZXIgZ2Vu
ZXJhdGluZyBwYXR0ZXJuIGZyb20gc2tlbGV0b24sIHdlIG5lZWQgdG8gY2hhbmdlIGgxMSB2LnMu
IGgxMiBhbmQgaDIzIHYucy4gaDI0IGlmIGhvdXJDeWNsZSBpcyBzcGVjaWZpZWQuCisgICAgaWYg
KGhvdXJDeWNsZSAhPSBIb3VyQ3ljbGU6Ok5vbmUpCisgICAgICAgIHJlcGxhY2VIb3VyQ3ljbGVJ
blBhdHRlcm4ocGF0dGVybkJ1ZmZlciwgaG91ckN5Y2xlKTsKIAogICAgIFN0cmluZ1ZpZXcgcGF0
dGVybihwYXR0ZXJuQnVmZmVyLmRhdGEoKSwgcGF0dGVybkJ1ZmZlci5zaXplKCkpOwogICAgIHNl
dEZvcm1hdHNGcm9tUGF0dGVybihwYXR0ZXJuKTsKQEAgLTg0OCw2ICs5NTIsMjUgQEAgdm9pZCBJ
bnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LAogICAgIHVjYWxfc2V0R3JlZ29yaWFuQ2hhbmdlKGNhbCwgbWluRUNN
QVNjcmlwdFRpbWUsICZzdGF0dXMpOwogfQogCitBU0NJSUxpdGVyYWwgSW50bERhdGVUaW1lRm9y
bWF0Ojpob3VyQ3ljbGVTdHJpbmcoSG91ckN5Y2xlIGhvdXJDeWNsZSkKK3sKKyAgICBzd2l0Y2gg
KGhvdXJDeWNsZSkgeworICAgIGNhc2UgSG91ckN5Y2xlOjpIMTE6CisgICAgICAgIHJldHVybiAi
aDExIl9zOworICAgIGNhc2UgSG91ckN5Y2xlOjpIMTI6CisgICAgICAgIHJldHVybiAiaDEyIl9z
OworICAgIGNhc2UgSG91ckN5Y2xlOjpIMjM6CisgICAgICAgIHJldHVybiAiaDIzIl9zOworICAg
IGNhc2UgSG91ckN5Y2xlOjpIMjQ6CisgICAgICAgIHJldHVybiAiaDI0Il9zOworICAgIGNhc2Ug
SG91ckN5Y2xlOjpOb25lOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
cmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7Cit9CisKIEFTQ0lJTGl0ZXJh
bCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OndlZWtkYXlTdHJpbmcoV2Vla2RheSB3ZWVrZGF5KQogewog
ICAgIHN3aXRjaCAod2Vla2RheSkgewpAQCAtMTA0MCw5ICsxMTYzLDkgQEAgSlNPYmplY3QqIElu
dGxEYXRlVGltZUZvcm1hdDo6cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpIGNvbnMKICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
Pm51bWJlcmluZ1N5c3RlbSwganNOb250cml2aWFsU3RyaW5nKHZtLCBtX251bWJlcmluZ1N5c3Rl
bSkpOwogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+dGltZVpv
bmUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgbV90aW1lWm9uZSkpOwogCi0gICAgaWYgKCFtX2hv
dXJDeWNsZS5pc051bGwoKSkgewotICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPmhvdXJDeWNsZSwganNOb250cml2aWFsU3RyaW5nKHZtLCBtX2hvdXJDeWNs
ZSkpOwotICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmhv
dXIxMiwganNCb29sZWFuKG1faG91ckN5Y2xlID09ICJoMTEiIHx8IG1faG91ckN5Y2xlID09ICJo
MTIiKSk7CisgICAgaWYgKG1faG91ckN5Y2xlICE9IEhvdXJDeWNsZTo6Tm9uZSkgeworICAgICAg
ICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmhvdXJDeWNsZSwganNO
b250cml2aWFsU3RyaW5nKHZtLCBob3VyQ3ljbGVTdHJpbmcobV9ob3VyQ3ljbGUpKSk7CisgICAg
ICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+aG91cjEyLCBqc0Jv
b2xlYW4obV9ob3VyQ3ljbGUgPT0gSG91ckN5Y2xlOjpIMTEgfHwgbV9ob3VyQ3ljbGUgPT0gSG91
ckN5Y2xlOjpIMTIpKTsKICAgICB9CiAKICAgICBpZiAobV93ZWVrZGF5ICE9IFdlZWtkYXk6Ok5v
bmUpCkBAIC0xMjY3LDggKzEzOTAsOCBAQCBVRGF0ZUludGVydmFsRm9ybWF0KiBJbnRsRGF0ZVRp
bWVGb3JtYXQ6OmNyZWF0ZURhdGVJbnRlcnZhbEZvcm1hdElmTmVjZXNzYXJ5KEpTRwogICAgIC8v
IFdlIG5lZWQgdG8gZW5mb3JjZSBIb3VyQ3ljbGUgYnkgc2V0dGluZyAiaGMiIGV4dGVuc2lvbiBp
ZiBpdCBpcyBzcGVjaWZpZWQuCiAgICAgU3RyaW5nQnVpbGRlciBsb2NhbGVCdWlsZGVyOwogICAg
IGxvY2FsZUJ1aWxkZXIuYXBwZW5kKG1fZGF0YUxvY2FsZSwgIi11LWNhLSIsIG1fY2FsZW5kYXIs
ICItbnUtIiwgbV9udW1iZXJpbmdTeXN0ZW0pOwotICAgIGlmICghbV9ob3VyQ3ljbGUuaXNOdWxs
KCkpCi0gICAgICAgIGxvY2FsZUJ1aWxkZXIuYXBwZW5kKCItaGMtIiwgbV9ob3VyQ3ljbGUpOwor
ICAgIGlmIChtX2hvdXJDeWNsZSAhPSBIb3VyQ3ljbGU6Ok5vbmUpCisgICAgICAgIGxvY2FsZUJ1
aWxkZXIuYXBwZW5kKCItaGMtIiwgaG91ckN5Y2xlU3RyaW5nKG1faG91ckN5Y2xlKSk7CiAgICAg
Q1N0cmluZyBkYXRhTG9jYWxlV2l0aEV4dGVuc2lvbnMgPSBsb2NhbGVCdWlsZGVyLnRvU3RyaW5n
KCkudXRmOCgpOwogCiAgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5oCmlu
ZGV4IDBiZGEyNTk4OTBlZDAzZjMxZWYyZjA1ZGE4MTY1Yzc0MmZmMzUzMjcuLmU3NjM1MmI2Yzc1
ZjFkMTJjMGUyZWZmYWZiODRkZGI1NDQ5ZjEzMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5oCkBAIC03OCw2ICs3OCw3IEBAIGNs
YXNzIEludGxEYXRlVGltZUZvcm1hdCBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsK
IAogICAgIFVEYXRlSW50ZXJ2YWxGb3JtYXQqIGNyZWF0ZURhdGVJbnRlcnZhbEZvcm1hdElmTmVj
ZXNzYXJ5KEpTR2xvYmFsT2JqZWN0Kik7CiAKKyAgICBlbnVtIGNsYXNzIEhvdXJDeWNsZSA6IHVp
bnQ4X3QgeyBOb25lLCBIMTEsIEgxMiwgSDIzLCBIMjQgfTsKICAgICBlbnVtIGNsYXNzIFdlZWtk
YXkgOiB1aW50OF90IHsgTm9uZSwgTmFycm93LCBTaG9ydCwgTG9uZyB9OwogICAgIGVudW0gY2xh
c3MgRXJhIDogdWludDhfdCB7IE5vbmUsIE5hcnJvdywgU2hvcnQsIExvbmcgfTsKICAgICBlbnVt
IGNsYXNzIFllYXIgOiB1aW50OF90IHsgTm9uZSwgVHdvRGlnaXQsIE51bWVyaWMgfTsKQEAgLTkx
LDYgKzkyLDcgQEAgY2xhc3MgSW50bERhdGVUaW1lRm9ybWF0IGZpbmFsIDogcHVibGljIEpTTm9u
RmluYWxPYmplY3QgewogICAgIGVudW0gY2xhc3MgRGF0ZVRpbWVTdHlsZSA6IHVpbnQ4X3QgeyBO
b25lLCBGdWxsLCBMb25nLCBNZWRpdW0sIFNob3J0IH07CiAKICAgICB2b2lkIHNldEZvcm1hdHNG
cm9tUGF0dGVybihjb25zdCBTdHJpbmdWaWV3Jik7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBo
b3VyQ3ljbGVTdHJpbmcoSG91ckN5Y2xlKTsKICAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHdlZWtk
YXlTdHJpbmcoV2Vla2RheSk7CiAgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBlcmFTdHJpbmcoRXJh
KTsKICAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHllYXJTdHJpbmcoWWVhcik7CkBAIC0xMDMsNiAr
MTA1LDExIEBAIGNsYXNzIEludGxEYXRlVGltZUZvcm1hdCBmaW5hbCA6IHB1YmxpYyBKU05vbkZp
bmFsT2JqZWN0IHsKICAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHRpbWVab25lTmFtZVN0cmluZyhU
aW1lWm9uZU5hbWUpOwogICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgZm9ybWF0U3R5bGVTdHJpbmco
RGF0ZVRpbWVTdHlsZSk7CiAKKyAgICBzdGF0aWMgSG91ckN5Y2xlIHBhcnNlSG91ckN5Y2xlKGNv
bnN0IFN0cmluZyYpOworICAgIHN0YXRpYyBIb3VyQ3ljbGUgaG91ckN5Y2xlRnJvbVBhdHRlcm4o
Y29uc3QgVmVjdG9yPFVDaGFyLCAzMj4mKTsKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlSG91ckN5
Y2xlSW5Ta2VsZXRvbihWZWN0b3I8VUNoYXIsIDMyPiYsIGJvb2wgaG91cjEyKTsKKyAgICBzdGF0
aWMgdm9pZCByZXBsYWNlSG91ckN5Y2xlSW5QYXR0ZXJuKFZlY3RvcjxVQ2hhciwgMzI+JiwgSG91
ckN5Y2xlKTsKKwogICAgIHVzaW5nIFVEYXRlRm9ybWF0RGVsZXRlciA9IElDVURlbGV0ZXI8dWRh
dF9jbG9zZT47CiAgICAgdXNpbmcgVURhdGVJbnRlcnZhbEZvcm1hdERlbGV0ZXIgPSBJQ1VEZWxl
dGVyPHVkdGl0dmZtdF9jbG9zZT47CiAKQEAgLTExNSw3ICsxMjIsNyBAQCBjbGFzcyBJbnRsRGF0
ZVRpbWVGb3JtYXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgU3RyaW5n
IG1fY2FsZW5kYXI7CiAgICAgU3RyaW5nIG1fbnVtYmVyaW5nU3lzdGVtOwogICAgIFN0cmluZyBt
X3RpbWVab25lOwotICAgIFN0cmluZyBtX2hvdXJDeWNsZTsKKyAgICBIb3VyQ3ljbGUgbV9ob3Vy
Q3ljbGUgeyBIb3VyQ3ljbGU6Ok5vbmUgfTsKICAgICBXZWVrZGF5IG1fd2Vla2RheSB7IFdlZWtk
YXk6Ok5vbmUgfTsKICAgICBFcmEgbV9lcmEgeyBFcmE6Ok5vbmUgfTsKICAgICBZZWFyIG1feWVh
ciB7IFllYXI6Ok5vbmUgfTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggOTgzMDEyMmZjY2NkYWM4NmJlMmY5MDhlNDVjYjAwODY3MDViYWMz
MC4uYzVjZWE2NzYyZGNmYTY2Y2E2YjRmZDA3ZGVkZGJjODk2ZGE0NzUxMyAxMDA2NDQKLS0tIGEv
SlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBA
QAorMjAyMC0wOS0xNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAg
ICAgIFtKU0NdIEFwcGx5IEludGwuRGF0ZVRpbWVGb3JtYXQgaG91ci1jeWNsZSBjb3JyZWN0bHkg
d2hlbiB0aW1lU3R5bGUgaXMgdXNlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE2NTIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgSlNUZXN0cy9zdHJlc3MvaW50bC1kYXRlLXRpbWUtZm9ybWF0LWRhdGUt
dGltZS1zdHlsZS1ob3VyLWN5Y2xlLmpzIHJlc3VsdCBpcyBub3cgbWF0Y2hpbmcgYWdhaW5zdCBW
OCBhbmQgU3BpZGVyTW9ua2V5LAorICAgICAgICBhbmQgdGhpcyBuZXcgYmVoYXZpb3IgaXMgbW9y
ZSByZWFzb25hYmxlLgorCisgICAgICAgICogc3RyZXNzL2ludGwtZGF0ZS10aW1lLWZvcm1hdC1k
YXRlLXRpbWUtc3R5bGUtaG91ci1jeWNsZS5qczoKKyAgICAgICAgKHNob3VsZEJlLm8uZm9ybWF0
KToKKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKiBzdHJlc3MvaW50bC1kYXRldGltZWZv
cm1hdC1ob3VyLWN5Y2xlLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAg
KHRocm93Lm5ldy5FcnJvcik6CisgICAgICAgICogdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbDoK
KwogMjAyMC0wOS0xMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtKU0NdIENhbm9uaWNhbGl6ZSAidHJ1ZSIgdW5pY29kZSBleHRlbnNpb24gdHlwZSB2YWx1
ZSB0byAiIgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvaW50bC1kYXRlLXRpbWUtZm9ybWF0
LWRhdGUtdGltZS1zdHlsZS1ob3VyLWN5Y2xlLmpzIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1kYXRl
LXRpbWUtZm9ybWF0LWRhdGUtdGltZS1zdHlsZS1ob3VyLWN5Y2xlLmpzCmluZGV4IGZiZDA2OWQz
YzBiYzdjNTg1NWRiOGU5NGY2MmQxZThhZDM0NjhkZTMuLmZjMzQ4ODMwYmRmZGVjM2YxNjBmY2Q5
NGE4NDQzYzcwZDcwMzk5OGEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2ludGwtZGF0ZS10
aW1lLWZvcm1hdC1kYXRlLXRpbWUtc3R5bGUtaG91ci1jeWNsZS5qcworKysgYi9KU1Rlc3RzL3N0
cmVzcy9pbnRsLWRhdGUtdGltZS1mb3JtYXQtZGF0ZS10aW1lLXN0eWxlLWhvdXItY3ljbGUuanMK
QEAgLTUsMTMgKzUsMjIgQEAgZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgewog
CiBsZXQgbm93MSA9IDE1OTI4NzA0NDAwMDA7CiBsZXQgbm93MiA9IDE1OTI4MjcyNDAwMDA7CisK
K3sKKyAgICBsZXQgbyA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KCJlbiIgLCB7CisgICAgICAg
IHRpbWVTdHlsZTogInNob3J0IiwKKyAgICAgICAgdGltZVpvbmU6ICJVVEMiLAorICAgIH0pOwor
ICAgIHNob3VsZEJlKG8uZm9ybWF0KG5vdzEpLCBgMTI6MDAgQU1gKTsKK30KKwogewogICAgIGxl
dCBvID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoImVuIiAsIHsKICAgICAgICAgdGltZVN0eWxl
OiAic2hvcnQiLAogICAgICAgICB0aW1lWm9uZTogIlVUQyIsCiAgICAgICAgIGhvdXJDeWNsZTog
ImgyMyIsCiAgICAgfSk7Ci0gICAgc2hvdWxkQmUoby5mb3JtYXQobm93MSksIGAwOjAwIEFNYCk7
CisgICAgc2hvdWxkQmUoby5mb3JtYXQobm93MSksIGAwMDowMGApOwogfQogCiB7CkBAIC0yMCw3
ICsyOSw3IEBAIGZ1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKICAgICAgICAg
dGltZVpvbmU6ICJVVEMiLAogICAgICAgICBob3VyQ3ljbGU6ICJoMjQiLAogICAgIH0pOwotICAg
IHNob3VsZEJlKG8uZm9ybWF0KG5vdzEpLCBgMjQ6MDAgQU1gKTsKKyAgICBzaG91bGRCZShvLmZv
cm1hdChub3cxKSwgYDI0OjAwYCk7CiB9CiAKIHsKQEAgLTQ1LDE4ICs1NCw0NCBAQCBmdW5jdGlv
biBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CiAgICAgbGV0IG8gPSBuZXcgSW50bC5EYXRl
VGltZUZvcm1hdCgiZW4iICwgewogICAgICAgICB0aW1lU3R5bGU6ICJzaG9ydCIsCiAgICAgICAg
IHRpbWVab25lOiAiVVRDIiwKLSAgICAgICAgaG91ckN5Y2xlOiAiaDIzIiwKKyAgICAgICAgaG91
cjEyOiB0cnVlLAorICAgIH0pOworICAgIHNob3VsZEJlKG8uZm9ybWF0KG5vdzEpLCBgMTI6MDAg
QU1gKTsKK30KKworeworICAgIGxldCBvID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoImVuIiAs
IHsKKyAgICAgICAgdGltZVN0eWxlOiAic2hvcnQiLAorICAgICAgICB0aW1lWm9uZTogIlVUQyIs
CisgICAgICAgIGhvdXIxMjogZmFsc2UsCisgICAgfSk7CisgICAgc2hvdWxkQmUoby5mb3JtYXQo
bm93MSksIGAwMDowMGApOworfQorCit7CisgICAgbGV0IG8gPSBuZXcgSW50bC5EYXRlVGltZUZv
cm1hdCgiZW4iICwgeworICAgICAgICB0aW1lU3R5bGU6ICJzaG9ydCIsCisgICAgICAgIHRpbWVa
b25lOiAiVVRDIiwKICAgICB9KTsKICAgICBzaG91bGRCZShvLmZvcm1hdChub3cyKSwgYDEyOjAw
IFBNYCk7CiB9CiAKK3sKKyAgICBsZXQgbyA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KCJlbiIg
LCB7CisgICAgICAgIHRpbWVTdHlsZTogInNob3J0IiwKKyAgICAgICAgdGltZVpvbmU6ICJVVEMi
LAorICAgICAgICBob3VyQ3ljbGU6ICJoMjMiLAorICAgIH0pOworICAgIHNob3VsZEJlKG8uZm9y
bWF0KG5vdzIpLCBgMTI6MDBgKTsKK30KKwogewogICAgIGxldCBvID0gbmV3IEludGwuRGF0ZVRp
bWVGb3JtYXQoImVuIiAsIHsKICAgICAgICAgdGltZVN0eWxlOiAic2hvcnQiLAogICAgICAgICB0
aW1lWm9uZTogIlVUQyIsCiAgICAgICAgIGhvdXJDeWNsZTogImgyNCIsCiAgICAgfSk7Ci0gICAg
c2hvdWxkQmUoby5mb3JtYXQobm93MiksIGAxMjowMCBQTWApOworICAgIHNob3VsZEJlKG8uZm9y
bWF0KG5vdzIpLCBgMTI6MDBgKTsKIH0KIAogewpAQCAtNzYsMyArMTExLDIxIEBAIGZ1bmN0aW9u
IHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKICAgICB9KTsKICAgICBzaG91bGRCZShvLmZv
cm1hdChub3cyKSwgYDEyOjAwIFBNYCk7CiB9CisKK3sKKyAgICBsZXQgbyA9IG5ldyBJbnRsLkRh
dGVUaW1lRm9ybWF0KCJlbiIgLCB7CisgICAgICAgIHRpbWVTdHlsZTogInNob3J0IiwKKyAgICAg
ICAgdGltZVpvbmU6ICJVVEMiLAorICAgICAgICBob3VyMTI6IHRydWUsCisgICAgfSk7CisgICAg
c2hvdWxkQmUoby5mb3JtYXQobm93MiksIGAxMjowMCBQTWApOworfQorCit7CisgICAgbGV0IG8g
PSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgiZW4iICwgeworICAgICAgICB0aW1lU3R5bGU6ICJz
aG9ydCIsCisgICAgICAgIHRpbWVab25lOiAiVVRDIiwKKyAgICAgICAgaG91cjEyOiBmYWxzZSwK
KyAgICB9KTsKKyAgICBzaG91bGRCZShvLmZvcm1hdChub3cyKSwgYDEyOjAwYCk7Cit9CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLWRhdGV0aW1lZm9ybWF0LWhvdXItY3ljbGUuanMg
Yi9KU1Rlc3RzL3N0cmVzcy9pbnRsLWRhdGV0aW1lZm9ybWF0LWhvdXItY3ljbGUuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYzFjYTNlZTgzODgzODZjNzYyMmNmMDViZTEyNmI3MDBlZGUyMTM0MwotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtZGF0ZXRpbWVmb3JtYXQtaG91ci1jeWNsZS5q
cwpAQCAtMCwwICsxLDI0IEBACisvLyBUaGlzIHRlc3QgaXMgc3BlY2lmaWNhbGx5IGZvY3VzaW5n
IG9uIGhvdXItY3ljbGUgYmVoYXZpb3Igb2YgSW50bC5EYXRlVGltZUZvcm1hdC4KKworZnVuY3Rp
b24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVj
dGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGV4cGVjdGVkICR7ZXhwZWN0ZWR9IGJ1dCBn
b3QgJHthY3R1YWx9YCk7Cit9CisKK3sKKyAgICBsZXQgb3B0aW9ucyA9IG5ldyBJbnRsLkRhdGVU
aW1lRm9ybWF0KGBkZS11LWhjLWgxMWAsIHsKKyAgICAgICAgZGF0ZVN0eWxlOiAic2hvcnQiCisg
ICAgfSkucmVzb2x2ZWRPcHRpb25zKCk7CisgICAgc2hvdWxkQmUob3B0aW9ucy5ob3VyQ3ljbGUs
IHVuZGVmaW5lZCk7CisgICAgc2hvdWxkQmUob3B0aW9ucy5ob3VyMTIsIHVuZGVmaW5lZCk7Cit9
Cit7CisgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvZWNtYTQwMi9pc3N1ZXMvNDAyCisg
ICAgc2hvdWxkQmUobmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoImVuIiwge2hvdXI6ICJudW1lcmlj
In0pLnJlc29sdmVkT3B0aW9ucygpLmhvdXJDeWNsZSwgImgxMiIpOworICAgIHNob3VsZEJlKG5l
dyBJbnRsLkRhdGVUaW1lRm9ybWF0KCJlbiIsIHtob3VyMTI6IHRydWUsIGhvdXI6ICJudW1lcmlj
In0pLnJlc29sdmVkT3B0aW9ucygpLmhvdXJDeWNsZSwgImgxMiIpOworICAgIHNob3VsZEJlKG5l
dyBJbnRsLkRhdGVUaW1lRm9ybWF0KCJlbiIsIHtob3VyMTI6IGZhbHNlLCBob3VyOiAibnVtZXJp
YyJ9KS5yZXNvbHZlZE9wdGlvbnMoKS5ob3VyQ3ljbGUsICJoMjMiKTsKK30KK3sKKyAgICAvLyBo
dHRwczovL2dpdGh1Yi5jb20vdGMzOS9lY21hNDAyL3B1bGwvNDM2I2lzc3VlY29tbWVudC02Mjgx
MDY3ODUKKyAgICBzaG91bGRCZShuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgiamEiLCB7aG91cjEy
OiB0cnVlLCBob3VyOiAibnVtZXJpYyJ9KS5yZXNvbHZlZE9wdGlvbnMoKS5ob3VyQ3ljbGUsICJo
MTEiKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbCBi
L0pTVGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbAppbmRleCA5OTUwMzg5YjA2Mjg1YjE4
NzVlM2MzNTExZTYxZTJjMjA4MzZiYWMwLi40NzhmMjQyNTUwYzc3NThhNDU2NGMzYmE5MTljNGMy
NTY5NWQxNjg3IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwK
KysrIGIvSlNUZXN0cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sCkBAIC0xNDUzLDggKzE0NTMs
OCBAQCB0ZXN0L2J1aWx0LWlucy9UeXBlZEFycmF5Q29uc3RydWN0b3JzL29mL25ldy1pbnN0YW5j
ZS11c2luZy1jdXN0b20tY3Rvci5qczoKICAgZGVmYXVsdDogJ1R5cGVFcnJvcjogVHlwZWRBcnJh
eS5vZiByZXF1aXJlcyBpdHMgdGhpcyBhcmd1bWVudCB0byBzdWJjbGFzcyBhIFR5cGVkQXJyYXkg
Y29uc3RydWN0b3IgKFRlc3Rpbmcgd2l0aCBGbG9hdDY0QXJyYXkuKScKICAgc3RyaWN0IG1vZGU6
ICdUeXBlRXJyb3I6IFR5cGVkQXJyYXkub2YgcmVxdWlyZXMgaXRzIHRoaXMgYXJndW1lbnQgdG8g
c3ViY2xhc3MgYSBUeXBlZEFycmF5IGNvbnN0cnVjdG9yIChUZXN0aW5nIHdpdGggRmxvYXQ2NEFy
cmF5LiknCiB0ZXN0L2ludGw0MDIvRGF0ZVRpbWVGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdC90aW1l
ZGF0ZXN0eWxlLWVuLmpzOgotICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBSZXN1bHQgZm9yIGZ1
bGwgd2l0aCB7fSBFeHBlY3RlZCBTYW1lVmFsdWUowqsxNDoxMjo0NyBQTSBDb29yZGluYXRlZCBV
bml2ZXJzYWwgVGltZcK7LCDCqzE0OjEyOjQ3IENvb3JkaW5hdGVkIFVuaXZlcnNhbCBUaW1lwrsp
IHRvIGJlIHRydWUnCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBSZXN1bHQgZm9yIGZ1
bGwgd2l0aCB7fSBFeHBlY3RlZCBTYW1lVmFsdWUowqsxNDoxMjo0NyBQTSBDb29yZGluYXRlZCBV
bml2ZXJzYWwgVGltZcK7LCDCqzE0OjEyOjQ3IENvb3JkaW5hdGVkIFVuaXZlcnNhbCBUaW1lwrsp
IHRvIGJlIHRydWUnCisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IFJlc3VsdCBmb3IgZGF0ZT1t
ZWRpdW0gYW5kIHRpbWU9ZnVsbCBFeHBlY3RlZCBTYW1lVmFsdWUowqtNYXkgMSwgMTg4NiBhdCAy
OjEyOjQ3IFBNIENvb3JkaW5hdGVkIFVuaXZlcnNhbCBUaW1lwrssIMKrTWF5IDEsIDE4ODYsIDI6
MTI6NDcgUE0gQ29vcmRpbmF0ZWQgVW5pdmVyc2FsIFRpbWXCuykgdG8gYmUgdHJ1ZScKKyAgc3Ry
aWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IFJlc3VsdCBmb3IgZGF0ZT1tZWRpdW0gYW5kIHRpbWU9
ZnVsbCBFeHBlY3RlZCBTYW1lVmFsdWUowqtNYXkgMSwgMTg4NiBhdCAyOjEyOjQ3IFBNIENvb3Jk
aW5hdGVkIFVuaXZlcnNhbCBUaW1lwrssIMKrTWF5IDEsIDE4ODYsIDI6MTI6NDcgUE0gQ29vcmRp
bmF0ZWQgVW5pdmVyc2FsIFRpbWXCuykgdG8gYmUgdHJ1ZScKIHRlc3QvaW50bDQwMi9EYXRlVGlt
ZUZvcm1hdC9wcm90b3R5cGUvZm9ybWF0UmFuZ2UvZW4tVVMuanM6CiAgIGRlZmF1bHQ6ICdUZXN0
MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzEvMy8yMDE54oCJ4oCT4oCJMS81LzIwMTnC
uywgwqsxLzMvMjAxOSDigJMgMS81LzIwMTnCuykgdG8gYmUgdHJ1ZScKICAgc3RyaWN0IG1vZGU6
ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzEvMy8yMDE54oCJ4oCT4oCJMS81
LzIwMTnCuywgwqsxLzMvMjAxOSDigJMgMS81LzIwMTnCuykgdG8gYmUgdHJ1ZScK
</data>
<flag name="review"
          id="424297"
          type_id="1"
          status="+"
          setter="ross.kirsling"
    />
          </attachment>
      

    </bug>

</bugzilla>