<?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>230908</bug_id>
          
          <creation_ts>2021-09-28 11:57:15 -0700</creation_ts>
          <short_desc>Reduce loop strength on ARM64 too</short_desc>
          <delta_ts>2024-04-08 13:37: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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>CONFIGURATION CHANGED</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>
          <dependson>232647</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Justin Michaud">justin_michaud</reporter>
          <assigned_to name="Justin Michaud">justin_michaud</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</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>1797982</commentid>
    <comment_count>0</comment_count>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2021-09-28 11:57:15 -0700</bug_when>
    <thetext>Reduce loop strength on ARM64 too</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797985</commentid>
    <comment_count>1</comment_count>
      <attachid>439504</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2021-09-28 12:06:16 -0700</bug_when>
    <thetext>Created attachment 439504
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797987</commentid>
    <comment_count>2</comment_count>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2021-09-28 12:07:14 -0700</bug_when>
    <thetext>This is WIP, but I wanted to save it here so I don&apos;t lose it while testing perf</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797998</commentid>
    <comment_count>3</comment_count>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2021-09-28 13:01:22 -0700</bug_when>
    <thetext>A mixed bag so far:

memcpy-wasm-small                  171.2750+-1.6420     !    181.5388+-0.9457        ! definitely 1.0599x slower
memcpy-wasm-large                  438.1443+-14.3229    ^     44.0324+-1.8863        ^ definitely 9.9505x faster
memcpy-wasm-medium                  20.1398+-0.6413     !     22.5029+-0.4836        ! definitely 1.1173x slower
memcpy-typed-loop-speculative     1304.0646+-23.7363        1283.0492+-10.2491         might be 1.0164x faster
memcpy-typed-loop                   59.6541+-0.3893     ?     59.7131+-0.6997        ?
memcpy-wasm                        339.8212+-1.6913     ^     46.7857+-0.6053        ^ definitely 7.2634x faster
memcpy-typed-loop-large          81118.9502+-150.6358      80774.3593+-894.3635      
memcpy-loop                       4919.8907+-68.8522    ?   4960.3104+-48.1172       ?
memcpy-typed-loop-small             76.2613+-1.0061     !     78.2971+-0.7698        ! definitely 1.0267x slower</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798662</commentid>
    <comment_count>4</comment_count>
      <attachid>439678</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2021-09-29 16:17:52 -0700</bug_when>
    <thetext>Created attachment 439678
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800689</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-05 11:58:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/83897351&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2026870</commentid>
    <comment_count>6</comment_count>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2024-04-08 13:37:17 -0700</bug_when>
    <thetext>Closing old bugs assigned to me</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439504</attachid>
            <date>2021-09-28 12:06:16 -0700</date>
            <delta_ts>2021-09-29 16:17:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230908-20210928120615.patch</filename>
            <type>text/plain</type>
            <size>26859</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyODI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
Zjg2MWRkNTBlYjY4YTJlNjE1NTMwMjQxNTIyMjkxNjgwM2RmOWJjLi40OGI4NDI5ZmU1ZDllMjI1
ZWJhZjA1NTIyNDg1OGUyZjg5N2Q2OWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NSBAQAorMjAyMS0wOS0yOCAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBh
cHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNlIGxvb3Agc3RyZW5ndGggb24gQVJNNjQgdG9vCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzA5MDgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgUmVk
dWNlTG9vcFN0cmVuZ3RoIHRvOgorICAgICAgICAtIFN1cHBvcnQgV2FzbUFkZHJlc3MKKyAgICAg
ICAgLSBTdXBwb3J0IGkgIT0gc2l6ZSBleGl0IGNvbmRpdGlvbgorICAgICAgICAtIFN1cHBvcnQg
OCBiaXQgdmFsdWVzIHRvbywgYW5kIHVzZSBvdXIgZ2VuZXJpYyBtZW1tb3ZlIGluc3RlYWQgb2Yg
dGhlIGV4aXN0aW5nIGlubGluZWQgb25lCisgICAgICAgIC0gU3VwcG9ydCBBUk02NAorICAgICAg
ICAtIEZpeCB0aGUgYnJva2VuIGhvaXN0aW5nIGxvZ2ljIHRvIGJlIG1vcmUgY29uc2VydmF0aXZl
CisKKyAgICAgICAgV2Ugc2hvdWxkIGNsZWFuIHRoaXMgdXAgdG8gbWFrZSBtYXRjaGluZyBhbmQg
bWF0ZXJpYWxpemluZyBtb3JlIGxvb3AgcGF0dGVybnMgZWFzaWVyLiBXZSBzaG91bGQKKyAgICAg
ICAgYWxzbyBjb25zaWRlciB1cGRhdGluZyB0aGlzIHdoZW4gd2UgaW1wbGVtZW50IHRoZSBtZW1j
cHkgaW5zdHJ1Y3Rpb24uCisKKyAgICAgICAgKHNlcGFyYXRlIHBhdGNoLCBidXQgdG9nZXRoZXIg
Zm9yIHBlcmYgdGVzdGluZykKKyAgICAgICAgVHlwZWQgYXJyYXlzIHNob3VsZCBGb3JjZU9TUkV4
aXQgd2hlbiB0aGV5IHNlZSBhIEdldEJ5SUQgZm9yIGxlbmd0aCB3aXRoIG5vIHByb2ZpbGluZyBp
bmZvcm1hdGlvbiBpbiBGVEwuCisgICAgICAgIElkZWFsbHksIHRoZSBMTGludCB3b3VsZCBjb2xs
ZWN0IGluZm9ybWF0aW9uIGluIHRoaXMgY2FzZSwgYnV0IGl0IHdvdWxkIG5lZWQgdG8gY29sbGVj
dCBtb3JlCisgICAgICAgIGluZm8gdGhhbiBpcyB0eXBpY2FsbHkgY29sbGVjdGVkICh3aGljaCBt
aWdodCBiZSBhIHBlcmYgcmVncmVzc2lvbikgYmVjYXVzZSBUeXBlZEFycmF5cyB1c2UgYW4gCisg
ICAgICAgIGludHJpbnNpYyBnZXR0ZXIuIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2Ugb3RoZXJ3
aXNlLCB0aGUgRlRMJ3MgSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uIHBoYXNlIGlzIGVudGlyZWx5
CisgICAgICAgIHVzZWxlc3MgZm9yIFR5cGVkQXJyYXlzLCBkZXBlbmRlbnQgb24gaG93IHdlIHR1
bmUvdGltZSB0aGUgRlRMIHRpZXIgdXAuCisKKyAgICAgICAgV2Ugc2hvdWxkIGNvbnNpZGVyIGNh
Y2hpbmcgaW50cmluc2ljIGdldHRlcnMgaW4gdGhlIExMaW50IGluIGdlbmVyYWwgaWYgdGhhdCB3
b3VsZAorICAgICAgICBiZSBwcm9maXRhYmxlIGluc3RlYWQuCisKKyAgICAgICAgKiBiMy9CM1Jl
ZHVjZUxvb3BTdHJlbmd0aC5jcHA6CisgICAgICAgIChKU0M6OkIzOjpKU0NfREVGSU5FX0pJVF9P
UEVSQVRJT04pOgorICAgICAgICAoSlNDOjpCMzo6UmVkdWNlTG9vcFN0cmVuZ3RoOjpyZWR1Y2VC
eXRlQ29weUxvb3BzVG9NZW1jcHkpOgorICAgICAgICAoSlNDOjpCMzo6UmVkdWNlTG9vcFN0cmVu
Z3RoOjpjYW5Ib2lzdFZhbHVlKToKKyAgICAgICAgKEpTQzo6QjM6OlJlZHVjZUxvb3BTdHJlbmd0
aDo6aG9pc3RCbG9ja3MpOgorICAgICAgICAoSlNDOjpCMzo6UmVkdWNlTG9vcFN0cmVuZ3RoOjpt
YWtlV2FzbUFkZHJlc3MpOgorICAgICAgICAoSlNDOjpCMzo6UmVkdWNlTG9vcFN0cmVuZ3RoOjpo
b2lzdFZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKiBiMy9CM1JlZHVjZUxvb3BTdHJlbmd0aC5o
OgorICAgICAgICAoSlNDOjpCMzo6ZmFzdEZvcndhcmRDb3B5MzIpOiBEZWxldGVkLgorICAgICAg
ICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQpOgorICAgICAgICAqIGhlYXAvR0NNZW1vcnlPcGVyYXRp
b25zLmg6CisgICAgICAgIChKU0M6OmdjU2FmZU1lbWNweSk6CisgICAgICAgIChKU0M6OmdjU2Fm
ZU1lbW1vdmUpOgorCiAyMDIxLTA5LTIxICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVk
QGFwcGxlLmNvbT4KIAogICAgICAgICBEaWZmZXJlbnRpYWwgdGVzdGluZzogbGl2ZSBzdGF0ZW1l
bnQgZG9uJ3QgZXhlY3V0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
UmVkdWNlTG9vcFN0cmVuZ3RoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVj
ZUxvb3BTdHJlbmd0aC5jcHAKaW5kZXggYzVhZWQ0NGJkN2UwNjNhMmU5OTk3Y2Q0OGViMzY0ZDJm
ZGRhNDIwZS4uYzQ5ZmIzZTY0YzFlZGNlOTQ3MmZlYzU5Zjk5YTNkNDlhN2Y1YmRjMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlTG9vcFN0cmVuZ3RoLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VMb29wU3RyZW5ndGguY3BwCkBA
IC0zNiwxNSArMzYsMjUgQEAKICNpbmNsdWRlICJCM1BoYXNlU2NvcGUuaCIKICNpbmNsdWRlICJC
M1Byb2NlZHVyZUlubGluZXMuaCIKICNpbmNsdWRlICJCM1ZhbHVlSW5saW5lcy5oIgorI2luY2x1
ZGUgIkdDTWVtb3J5T3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgPHd0Zi9TbWFsbFNldC5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAK
LSNpZiBDUFUoWDg2XzY0KQotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkZhc3RG
b3J3YXJkQ29weTMyLCB2b2lkLCAodWludDMyX3QqIGRzdCwgY29uc3QgdWludDMyX3QqIHNyYywg
c2l6ZV90IHNpemUpKQorI2lmIENPTVBJTEVSKEdDQ19DT01QQVRJQkxFKSAmJiAoQ1BVKFg4Nl82
NCkgfHwgQ1BVKEFSTTY0KSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25HQ1Nh
ZmVNZW1tb3ZlNCwgdm9pZCwgKHVpbnQzMl90KiBkc3QsIGNvbnN0IHVpbnQzMl90KiBzcmMsIHNp
emVfdCBieXRlcykpCiB7Ci0gICAgcmV0dXJuIGZhc3RGb3J3YXJkQ29weTMyKGRzdCwgc3JjLCBz
aXplKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihKU1ZhbHVlKSA+IHNpemVvZih1aW50MzJf
dCkpOworICAgIC8vIFNpbmNlIHdlIGFyZSBzbWFsbGVyIHRoYW4gYSBKU1ZhbHVlLCB3ZSBjYW5u
b3QgYmUgYSBwb2ludGVyIHRoYXQgdGhlIEdDIGNhbiBtYXJrLgorICAgIC8vIFRPRE86IHdhc20g
Z2M/IEkgZmVlbCBsaWtlIHRoaXMgd2FzIHdyb25nIGZvciBzb21lIHJlYXNvbgorICAgIG1lbW1v
dmUoZHN0LCBzcmMsIGJ5dGVzKTsKK30KKworSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbkdDU2FmZU1lbW1vdmU4LCB2b2lkLCAoSlNWYWx1ZSogZHN0LCBjb25zdCBKU1ZhbHVlKiBz
cmMsIHNpemVfdCBieXRlcykpCit7CisgICAgc3RhdGljX2Fzc2VydChzaXplb2YoSlNWYWx1ZSkg
PT0gc2l6ZW9mKHVpbnQ2NF90KSk7CisgICAgZ2NTYWZlTWVtbW92ZShkc3QsIHNyYywgYnl0ZXMp
OwogfQogI2VuZGlmCiAKQEAgLTYyLDYgKzcyLDggQEAgY2xhc3MgUmVkdWNlTG9vcFN0cmVuZ3Ro
IHsKIAogICAgICAgICBWYWx1ZSogYXJyYXlCYXNlOwogICAgICAgICBWYWx1ZSogaW5kZXg7CisK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxHUFJSZWc+IHdhc21CYXNlR1BSOwogICAgIH07CiAKIHB1
YmxpYzoKQEAgLTc0LDcgKzg2LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSNpZiBDUFUo
WDg2XzY0KQorI2lmIENPTVBJTEVSKEdDQ19DT01QQVRJQkxFKSAmJiAoQ1BVKFg4Nl82NCkgfHwg
Q1BVKEFSTTY0KSkKICAgICB2b2lkIHJlZHVjZUJ5dGVDb3B5TG9vcHNUb01lbWNweSgpCiAgICAg
ewogICAgICAgICBIYXNoU2V0PFZhbHVlKj4gcGF0dGVybk1hdGNoZWRWYWx1ZXM7CkBAIC04Niwy
MSArOTgsNDUgQEAgcHVibGljOgogCiAgICAgICAgIFZhbHVlKiBsb2FkID0gc3RvcmUtPmNoaWxk
KDApOwogICAgICAgICB1aW50MzJfdCBlbGVtU2l6ZSA9IHNpemVvZlR5cGUobG9hZC0+dHlwZSgp
KTsKLSAgICAgICAgaWYgKGxvYWQtPm9wY29kZSgpICE9IExvYWQgfHwgZWxlbVNpemUgIT0gNCkK
LSAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgcGF0dGVybk1hdGNoZWRWYWx1ZXMuYWRkKGxv
YWQpOwogCisgICAgICAgIHN0ZDo6ZnVuY3Rpb248VmFsdWUqKEJhc2ljQmxvY2sqKT4gb3BlcmF0
aW9uRm9yRWxlbVNpemUgPSBudWxscHRyOworICAgICAgICBpZiAoZWxlbVNpemUgPT0gNCkgewor
ICAgICAgICAgICAgb3BlcmF0aW9uRm9yRWxlbVNpemUgPSBbPV0oQmFzaWNCbG9jayogYikgewor
ICAgICAgICAgICAgICAgIHJldHVybiBiLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4obV9wcm9j
LCBsb2FkLT5vcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9u
R0NTYWZlTWVtbW92ZTQpKTsKKyAgICAgICAgICAgIH07CisgICAgICAgIH0gZWxzZSBpZiAoZWxl
bVNpemUgPT0gOCkgeworICAgICAgICAgICAgb3BlcmF0aW9uRm9yRWxlbVNpemUgPSBbPV0oQmFz
aWNCbG9jayogYikgeworICAgICAgICAgICAgICAgIHJldHVybiBiLT5hcHBlbmROZXc8Q29uc3RQ
dHJWYWx1ZT4obV9wcm9jLCBsb2FkLT5vcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uPE9wZXJhdGlvblB0
clRhZz4ob3BlcmF0aW9uR0NTYWZlTWVtbW92ZTQpKTsKKyAgICAgICAgICAgIH07CisgICAgICAg
IH0KKworICAgICAgICBpZiAobG9hZC0+b3Bjb2RlKCkgIT0gTG9hZCB8fCAhb3BlcmF0aW9uRm9y
RWxlbVNpemUpCisgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgaWYgKHZlcmJvc2UpCiAg
ICAgICAgICAgICBkYXRhTG9nTG4oIkZvdW5kIHN0b3JlL2xvYWQ6IiwgKnN0b3JlKTsKIAogICAg
ICAgICBhdXRvIGV4dHJhY3RBcnJheUluZm8gPSBbJl0gKFZhbHVlKiB2YWx1ZSkgLT4gc3RkOjpv
cHRpb25hbDxBZGRySW5mbz4gewotICAgICAgICAgICAgcGF0dGVybk1hdGNoZWRWYWx1ZXMuYWRk
KHZhbHVlKTsKLQogICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxBZGRySW5mbz4gYWRkciA9IHsg
QWRkckluZm8oKSB9OwogCiAgICAgICAgICAgICBWYWx1ZSogc3VtID0gdmFsdWU7Ci0gICAgICAg
ICAgICBpZiAodmFsdWUtPm9wY29kZSgpID09IFpFeHQzMikKKyAgICAgICAgICAgIHBhdHRlcm5N
YXRjaGVkVmFsdWVzLmFkZChzdW0pOworCisgICAgICAgICAgICBpZiAoc3VtLT5vcGNvZGUoKSA9
PSBXYXNtQWRkcmVzcykgeworICAgICAgICAgICAgICAgIFdhc21BZGRyZXNzVmFsdWUqIHdhc21B
ZGRyZXNzID0gc3VtLT5hczxXYXNtQWRkcmVzc1ZhbHVlPigpOworICAgICAgICAgICAgICAgIGFk
ZHItPndhc21CYXNlR1BSID0geyB3YXNtQWRkcmVzcy0+cGlubmVkR1BSKCkgfTsKKyAgICAgICAg
ICAgICAgICBzdW0gPSB3YXNtQWRkcmVzcy0+Y2hpbGQoMCk7CisgICAgICAgICAgICAgICAgcGF0
dGVybk1hdGNoZWRWYWx1ZXMuYWRkKHN1bSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGlmIChzdW0tPm9wY29kZSgpID09IFpFeHQzMikgewogICAgICAgICAgICAgICAgIHN1bSA9IHN1
bS0+Y2hpbGQoMCk7CisgICAgICAgICAgICAgICAgcGF0dGVybk1hdGNoZWRWYWx1ZXMuYWRkKHN1
bSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAg
ICAgICAgIGRhdGFMb2dMbigiRXhhbWluaW5nIGFycmF5ICIsICp2YWx1ZSwgIiwgZm91bmQgc3Vt
ICIsICpzdW0pOwogCiAgICAgICAgICAgICBpZiAoc3VtLT5vcGNvZGUoKSAhPSBBZGQgfHwgc3Vt
LT5udW1DaGlsZHJlbigpICE9IDIpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTEx
MCwxOSArMTQ2LDM0IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAvLyBNYXRjaCBhcnJCYXNl
W2kqZWxlbVNpemVdCiAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLT5vcGNvZGUoKSA9PSBTaGwK
ICAgICAgICAgICAgICAgICAgICAgJiYgdmFsdWUtPmNoaWxkKDApLT5vcGNvZGUoKSA9PSBQaGkK
LSAgICAgICAgICAgICAgICAgICAgJiYgdmFsdWUtPmNoaWxkKDEpLT5pc0ludChXVEY6OmZhc3RM
b2cyKGVsZW1TaXplKSkpCisgICAgICAgICAgICAgICAgICAgICYmIHZhbHVlLT5jaGlsZCgxKS0+
aXNJbnQoV1RGOjpmYXN0TG9nMihlbGVtU2l6ZSkpKSB7CisgICAgICAgICAgICAgICAgICAgIHBh
dHRlcm5NYXRjaGVkVmFsdWVzLmFkZCh2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIHBhdHRl
cm5NYXRjaGVkVmFsdWVzLmFkZCh2YWx1ZS0+Y2hpbGQoMCkpOwogICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdmFsdWUtPmNoaWxkKDApOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICBpZiAodmFsdWUtPm9wY29kZSgpID09IFNobAogICAgICAgICAgICAgICAgICAgICAmJiB2
YWx1ZS0+Y2hpbGQoMCktPm9wY29kZSgpID09IFpFeHQzMgogICAgICAgICAgICAgICAgICAgICAm
JiB2YWx1ZS0+Y2hpbGQoMCktPmNoaWxkKDApLT5vcGNvZGUoKSA9PSBQaGkKLSAgICAgICAgICAg
ICAgICAgICAgJiYgdmFsdWUtPmNoaWxkKDEpLT5pc0ludChXVEY6OmZhc3RMb2cyKGVsZW1TaXpl
KSkpCisgICAgICAgICAgICAgICAgICAgICYmIHZhbHVlLT5jaGlsZCgxKS0+aXNJbnQoV1RGOjpm
YXN0TG9nMihlbGVtU2l6ZSkpKSB7CisgICAgICAgICAgICAgICAgICAgIHBhdHRlcm5NYXRjaGVk
VmFsdWVzLmFkZCh2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIHBhdHRlcm5NYXRjaGVkVmFs
dWVzLmFkZCh2YWx1ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuTWF0
Y2hlZFZhbHVlcy5hZGQodmFsdWUtPmNoaWxkKDApLT5jaGlsZCgwKSk7CiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB2YWx1ZS0+Y2hpbGQoMCktPmNoaWxkKDApOworICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIH07CiAKICAg
ICAgICAgICAgIC8vIFRyeSB0byBmaW5kIGEga25vd24gcGF0dGVybiBhcHBsaWVkIHRvIGEgc2lu
Z2xlIHBoaSwgd2hpY2ggd2UgY2FuIGFzc3VtZSBpcyBvdXIgbG9vcCBpbmRleC4KICAgICAgICAg
ICAgIFZhbHVlKiBsZWZ0ID0gZXh0cmFjdExvb3BJbmRleEluU3VidHJlZShzdW0tPmNoaWxkKDAp
KTsKICAgICAgICAgICAgIFZhbHVlKiByaWdodCA9IGV4dHJhY3RMb29wSW5kZXhJblN1YnRyZWUo
c3VtLT5jaGlsZCgxKSk7CisKKyAgICAgICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgICAg
ICAgICAgaWYgKGxlZnQpCisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbigiTGVmdDogIiwg
KmxlZnQpOworICAgICAgICAgICAgICAgIGlmIChyaWdodCkKKyAgICAgICAgICAgICAgICAgICAg
ZGF0YUxvZ0xuKCJSaWdodDogIiwgKnJpZ2h0KTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAg
ICAgaWYgKGxlZnQgJiYgIXJpZ2h0KSB7CiAgICAgICAgICAgICAgICAgYWRkci0+aW5kZXggPSBs
ZWZ0OwogICAgICAgICAgICAgICAgIGFkZHItPmFycmF5QmFzZSA9IHN1bS0+Y2hpbGQoMSk7CkBA
IC0xMzMsNyArMTg0LDYgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIHJldHVybiB7IH07CiAK
ICAgICAgICAgICAgIHBhdHRlcm5NYXRjaGVkVmFsdWVzLmFkZChhZGRyLT5pbmRleCk7Ci0gICAg
ICAgICAgICBwYXR0ZXJuTWF0Y2hlZFZhbHVlcy5hZGQoYWRkci0+YXJyYXlCYXNlKTsKIAogICAg
ICAgICAgICAgcmV0dXJuIGFkZHI7CiAgICAgICAgIH07CkBAIC0xNDEsMjAgKzE5MSwzNSBAQCBw
dWJsaWM6CiAgICAgICAgIGF1dG8gZGVzdGluYXRpb24gPSBleHRyYWN0QXJyYXlJbmZvKHN0b3Jl
LT5jaGlsZCgxKSk7CiAgICAgICAgIGF1dG8gc291cmNlID0gZXh0cmFjdEFycmF5SW5mbyhsb2Fk
LT5jaGlsZCgwKSk7CiAKKyAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgICAgIGRhdGFM
b2coIkV4YW1pbmluZyBhcnJheSBpbmZvOiAiKTsKKyAgICAgICAgICAgIGlmIChzb3VyY2UpCisg
ICAgICAgICAgICAgICAgZGF0YUxvZygqc291cmNlLT5hcnJheUJhc2UsICJbIiwgKnNvdXJjZS0+
aW5kZXgsICJdIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZGF0YUxvZygi
bnVsbFtudWxsXSIpOworICAgICAgICAgICAgZGF0YUxvZygiID0gIik7CisgICAgICAgICAgICBp
ZiAoZGVzdGluYXRpb24pCisgICAgICAgICAgICAgICAgZGF0YUxvZygqZGVzdGluYXRpb24tPmFy
cmF5QmFzZSwgIlsiLCAqZGVzdGluYXRpb24tPmluZGV4LCAiXSIpOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIGRhdGFMb2coIm51bGxbbnVsbF0iKTsKKyAgICAgICAgICAgIGRh
dGFMb2dMbigpOworICAgICAgICB9CisKICAgICAgICAgaWYgKCFzb3VyY2UgfHwgIWRlc3RpbmF0
aW9uIHx8IHNvdXJjZS0+aW5kZXggIT0gZGVzdGluYXRpb24tPmluZGV4KQogICAgICAgICAgICAg
cmV0dXJuOwogCi0gICAgICAgIGlmIChkZXN0aW5hdGlvbi0+YXJyYXlCYXNlLT50eXBlKCkgIT0g
SW50NjQgfHwgc291cmNlLT5hcnJheUJhc2UtPnR5cGUoKSAhPSBJbnQ2NCkKKyAgICAgICAgaWYg
KCFkZXN0aW5hdGlvbi0+YXJyYXlCYXNlLT50eXBlKCkuaXNOdW1lcmljKCkgfHwgIXNvdXJjZS0+
YXJyYXlCYXNlLT50eXBlKCkuaXNOdW1lcmljKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAg
ICAgICAgaWYgKHZlcmJvc2UpCi0gICAgICAgICAgICBkYXRhTG9nTG4oIkZvdW5kIGFycmF5IGlu
Zm86ICIsICpzb3VyY2UtPmFycmF5QmFzZSwgIlsiLCAqc291cmNlLT5pbmRleCwgIl0gPSAiLCAq
ZGVzdGluYXRpb24tPmFycmF5QmFzZSwgIlsiLCAqZGVzdGluYXRpb24tPmluZGV4LCAiXSIpOwot
CiAgICAgICAgIC8vIEZpbmQgdGhlIGxvb3AgaGVhZGVyLCBmb290ZXIgYW5kIGlubmVyIGJsb2Nr
cy4KICAgICAgICAgLy8gVmVyaWZ5IHRoYXQgdGhlcmUgaXMgb25lIGVudHJhbmNlIHRvIGFuZCBv
bmUgZXhpdCBmcm9tIHRoZSBsb29wLgogICAgICAgICBhdXRvKiBsb29wID0gbV9wcm9jLm5hdHVy
YWxMb29wcygpLmlubmVyTW9zdExvb3BPZihtX2Jsb2NrKTsKICAgICAgICAgaWYgKCFsb29wKQog
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAg
ZGF0YUxvZ0xuKCJUeXBlcyBhcmUgZ29vZCwgZm91bmQgbmF0dXJhbCBsb29wICIsICpsb29wKTsK
KwogICAgICAgICBCYXNpY0Jsb2NrKiBsb29wSGVhZCA9IGxvb3AtPmhlYWRlcigpOwogICAgICAg
ICBCYXNpY0Jsb2NrKiBsb29wRm9vdCA9IG51bGxwdHI7CiAgICAgICAgIEJhc2ljQmxvY2sqIGxv
b3BQcmVoZWFkZXIgPSBudWxscHRyOwpAQCAtMjUyLDYgKzMxNyw5IEBAIHB1YmxpYzoKIAogICAg
ICAgICAgICAgdXBkYXRlSW5kZXggPSB1cGRhdGVJbmRleC0+Y2hpbGQoMCk7CiAgICAgICAgICAg
ICBzdGFydGluZ0luZGV4ID0gc3RhcnRpbmdJbmRleC0+Y2hpbGQoMCk7CisgICAgICAgICAgICBw
YXR0ZXJuTWF0Y2hlZFZhbHVlcy5hZGQodXBkYXRlSW5kZXgpOworICAgICAgICAgICAgcGF0dGVy
bk1hdGNoZWRWYWx1ZXMuYWRkKHN0YXJ0aW5nSW5kZXgpOworCiAgICAgICAgICAgICBpZiAodXBk
YXRlSW5kZXgtPm9wY29kZSgpICE9IEFkZCB8fCAhdXBkYXRlSW5kZXgtPmNoaWxkKDEpLT5pc0lu
dCgxKSB8fCB1cGRhdGVJbmRleC0+Y2hpbGQoMCkgIT0gc291cmNlLT5pbmRleCkKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAKQEAgLTI3NCw2ICszNDIsNyBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgcGF0dGVybk1hdGNoZWRWYWx1ZXMuYWRkKGJyYW5j
aCk7CiAgICAgICAgICAgICBleGl0Q29uZGl0aW9uID0gYnJhbmNoLT5jaGlsZCgwKTsKKyAgICAg
ICAgICAgIHBhdHRlcm5NYXRjaGVkVmFsdWVzLmFkZChleGl0Q29uZGl0aW9uKTsKIAogICAgICAg
ICAgICAgY29uZGl0aW9uSW52ZXJ0ZWQgPSBsb29wUG9zdGZvb3RlciAhPSBsb29wRm9vdC0+c3Vj
Y2Vzc29yKDApLmJsb2NrKCk7CiAgICAgICAgICAgICBjaGVja0JlZm9yZVdyaXRlID0gbV9wcm9j
LmRvbWluYXRvcnMoKS5zdHJpY3RseURvbWluYXRlcyhsb29wRm9vdCwgbV9ibG9jayk7CkBAIC0y
ODcsOCArMzU2LDE1IEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICAgICAgYXV0byBleHRy
YWN0TG9vcEJvdW5kID0gWyZdIChWYWx1ZSogaW5kZXgsIFZhbHVlKiBib3VuZCkgLT4gVmFsdWUq
IHsKICAgICAgICAgICAgICAgICAvLyBNYXRjaCBpKzEgd2hlbiB3ZSBkbyBhIHdyaXRlIGZpcnN0
IGZvbGxvd2VkIGJ5IHRoZSBjaGVjayBmb3IgdGhlIG5leHQgaXRlcmF0aW9uCi0gICAgICAgICAg
ICAgICAgaWYgKCFjaGVja0JlZm9yZVdyaXRlICYmIGluZGV4LT5vcGNvZGUoKSA9PSBBZGQgJiYg
aW5kZXgtPmNoaWxkKDApID09IHNvdXJjZS0+aW5kZXggJiYgaW5kZXgtPmNoaWxkKDEpLT5pc0lu
dCgxKSkKKyAgICAgICAgICAgICAgICBpZiAoIWNoZWNrQmVmb3JlV3JpdGUgJiYgaW5kZXgtPm9w
Y29kZSgpID09IEFkZCAmJiBpbmRleC0+Y2hpbGQoMCkgPT0gc291cmNlLT5pbmRleCAmJiBpbmRl
eC0+Y2hpbGQoMSktPmlzSW50KDEpKSB7CisgICAgICAgICAgICAgICAgICAgIHBhdHRlcm5NYXRj
aGVkVmFsdWVzLmFkZChpbmRleCk7CisgICAgICAgICAgICAgICAgICAgIHBhdHRlcm5NYXRjaGVk
VmFsdWVzLmFkZChib3VuZCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBib3VuZDsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGNoZWNrQmVmb3JlV3JpdGUgJiYg
aW5kZXggPT0gc291cmNlLT5pbmRleCkgeworICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuTWF0
Y2hlZFZhbHVlcy5hZGQoYm91bmQpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gYm91bmQ7
CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
ICAgICAgICAgfTsKIApAQCAtMjk4LDYgKzM3NCwxMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICB9
IGVsc2UgaWYgKGV4aXRDb25kaXRpb24tPm9wY29kZSgpID09IExlc3NUaGFuICYmICFjb25kaXRp
b25JbnZlcnRlZCkgewogICAgICAgICAgICAgICAgIC8vIGVudGVyIGxvb3AgYWdhaW4gaWYgc2l6
ZSA8IGkKICAgICAgICAgICAgICAgICBsb29wQm91bmQgPSBleHRyYWN0TG9vcEJvdW5kKGV4aXRD
b25kaXRpb24tPmNoaWxkKDEpLCBleGl0Q29uZGl0aW9uLT5jaGlsZCgwKSk7CisgICAgICAgICAg
ICB9IGVsc2UgaWYgKGV4aXRDb25kaXRpb24tPm9wY29kZSgpID09IEVxdWFsICYmICFjb25kaXRp
b25JbnZlcnRlZCkgeworICAgICAgICAgICAgICAgIC8vIGVudGVyIGxvb3AgYWdhaW4gaWYgc2l6
ZSAhPSBpCisgICAgICAgICAgICAgICAgbG9vcEJvdW5kID0gZXh0cmFjdExvb3BCb3VuZChleGl0
Q29uZGl0aW9uLT5jaGlsZCgxKSwgZXhpdENvbmRpdGlvbi0+Y2hpbGQoMCkpOworICAgICAgICAg
ICAgICAgIGlmICghbG9vcEJvdW5kKQorICAgICAgICAgICAgICAgICAgICBsb29wQm91bmQgPSBl
eHRyYWN0TG9vcEJvdW5kKGV4aXRDb25kaXRpb24tPmNoaWxkKDApLCBleGl0Q29uZGl0aW9uLT5j
aGlsZCgxKSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICghbG9vcEJvdW5kKSB7
CkBAIC0zMTAsODMgKzM5MSw5OSBAQCBwdWJsaWM6CiAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGVy
ZSBhcmUgbm8gb3RoZXIgZWZmZWN0ZnVsIHRoaW5ncyBoYXBwZW5pbmcuCiAgICAgICAgIC8vIFRo
aXMgYWxzbyBndWFyYW50ZWVzIHRoYXQgd2UgZm91bmQgdGhlIG9ubHkgYnJhbmNoIGluIHRoZSBs
b29wLiBUaGlzIG1lYW5zIHRoYXQgb3VyCiAgICAgICAgIC8vIGxvYWQvc3RvcmUgbXVzdCBoYXBw
ZW4gaWZmIG91ciBpbmRleCB1cGRhdGUgYW5kIGJyYW5jaCBkby4KLSAgICAgICAgZm9yIChCYXNp
Y0Jsb2NrKiBibG9jayA6IGxvb3BJbm5lckJsb2NrcykgewotICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpbmRleCA9IDA7IGluZGV4IDwgYmxvY2stPnNpemUoKTsgKytpbmRleCkgewotICAgICAg
ICAgICAgICAgIFZhbHVlKiB2YWx1ZSA9IGJsb2NrLT5hdChpbmRleCk7Ci0gICAgICAgICAgICAg
ICAgaWYgKHBhdHRlcm5NYXRjaGVkVmFsdWVzLmNvbnRhaW5zKHZhbHVlKSB8fCB2YWx1ZS0+b3Bj
b2RlKCkgPT0gSnVtcCkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAg
ICAgICAgICBFZmZlY3RzIGVmZmVjdHMgPSB2YWx1ZS0+ZWZmZWN0cygpOwotICAgICAgICAgICAg
ICAgIGVmZmVjdHMucmVhZHNMb2NhbFN0YXRlID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgaWYg
KGVmZmVjdHMgIT0gRWZmZWN0czo6bm9uZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2
ZXJib3NlKQotICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJOb3QgYnl0ZSBjb3B5
IGxvb3AsIG5vZGUgIiwgKnZhbHVlLCAiIGhhcyBlZmZlY3RzIik7Ci0gICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LQotICAgICAgICBpZiAoIWhvaXN0VmFsdWUobG9vcFByZWhlYWRlciwgc291cmNlLT5hcnJheUJh
c2UsIGZhbHNlKQotICAgICAgICAgICAgfHwgIWhvaXN0VmFsdWUobG9vcFByZWhlYWRlciwgZGVz
dGluYXRpb24tPmFycmF5QmFzZSwgZmFsc2UpCi0gICAgICAgICAgICB8fCAhaG9pc3RWYWx1ZShs
b29wUHJlaGVhZGVyLCBsb29wQm91bmQsIGZhbHNlKSkKKyAgICAgICAgaWYgKCFob2lzdEJsb2Nr
cyhsb29wUHJlaGVhZGVyLCBsb29wSW5uZXJCbG9ja3MsIHBhdHRlcm5NYXRjaGVkVmFsdWVzLCAv
KiBjYW5NdXRhdGUgPSAqLyBmYWxzZSkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAg
aWYgKHZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nTG4oIkZvdW5kIGJ5dGUgY29weSBsb29w
OiAiLCAqc291cmNlLT5hcnJheUJhc2UsICJbIiwgKnNvdXJjZS0+aW5kZXgsICJdID0gIiwgKmRl
c3RpbmF0aW9uLT5hcnJheUJhc2UsICJbIiwgKmRlc3RpbmF0aW9uLT5pbmRleCwgIl0gZnJvbSBp
bmRleCAiLCAqc3RhcnRpbmdJbmRleCwgIiB0byBtYXggaW5kZXggIiwgKmxvb3BCb3VuZCwgIiBz
dHJpZGU6ICIsIGVsZW1TaXplKTsKIAotICAgICAgICBib29sIGhvaXN0UmVzdWx0ID0gaG9pc3RW
YWx1ZShsb29wUHJlaGVhZGVyLCBzb3VyY2UtPmFycmF5QmFzZSk7Ci0gICAgICAgIGhvaXN0UmVz
dWx0ICY9IGhvaXN0VmFsdWUobG9vcFByZWhlYWRlciwgZGVzdGluYXRpb24tPmFycmF5QmFzZSk7
Ci0gICAgICAgIGhvaXN0UmVzdWx0ICY9IGhvaXN0VmFsdWUobG9vcFByZWhlYWRlciwgbG9vcEJv
dW5kKTsKKyAgICAgICAgYm9vbCBob2lzdFJlc3VsdCA9IGhvaXN0QmxvY2tzKGxvb3BQcmVoZWFk
ZXIsIGxvb3BJbm5lckJsb2NrcywgcGF0dGVybk1hdGNoZWRWYWx1ZXMsIC8qIGNhbk11dGF0ZSA9
ICovIHRydWUpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKGhvaXN0UmVzdWx0LCBob2lzdFJlc3Vs
dCk7CisgICAgICAgIGF1dG8gb3JpZ2luID0gc291cmNlLT5hcnJheUJhc2UtPm9yaWdpbigpOwog
Ci0gICAgICAgIGF1dG8gb3JpZ2luID0gbG9vcFBvc3Rmb290ZXItPmF0KDApLT5vcmlnaW4oKTsK
LQotICAgICAgICBCYXNpY0Jsb2NrKiBtZW1jcHkgPSBtX2Jsb2NrSW5zZXJ0aW9uU2V0Lmluc2Vy
dEJlZm9yZShsb29wUG9zdGZvb3RlciwgbG9vcFBvc3Rmb290ZXItPmZyZXF1ZW5jeSgpKTsKLSAg
ICAgICAgbWVtY3B5LT5zZXRTdWNjZXNzb3JzKEZyZXF1ZW50ZWRCbG9jayhsb29wUG9zdGZvb3Rl
cikpOwotICAgICAgICBtZW1jcHktPmFkZFByZWRlY2Vzc29yKGxvb3BQcmVoZWFkZXIpOworICAg
ICAgICBCYXNpY0Jsb2NrKiBkb0NvcHlCb2R5ID0gbV9ibG9ja0luc2VydGlvblNldC5pbnNlcnRC
ZWZvcmUobG9vcFBvc3Rmb290ZXIsIGxvb3BQb3N0Zm9vdGVyLT5mcmVxdWVuY3koKSk7CisgICAg
ICAgIGRvQ29weUJvZHktPnNldFN1Y2Nlc3NvcnMoRnJlcXVlbnRlZEJsb2NrKGxvb3BQb3N0Zm9v
dGVyKSk7CisgICAgICAgIGRvQ29weUJvZHktPmFkZFByZWRlY2Vzc29yKGxvb3BQcmVoZWFkZXIp
OwogICAgICAgICB3aGlsZSAobG9vcFBvc3Rmb290ZXItPnByZWRlY2Vzc29ycygpLnNpemUoKSkg
CiAgICAgICAgICAgICBsb29wUG9zdGZvb3Rlci0+cmVtb3ZlUHJlZGVjZXNzb3IobG9vcFBvc3Rm
b290ZXItPnByZWRlY2Vzc29ycygpWzBdKTsKLSAgICAgICAgbG9vcFBvc3Rmb290ZXItPmFkZFBy
ZWRlY2Vzc29yKG1lbWNweSk7Ci0gICAgICAgIGxvb3BQcmVoZWFkZXItPnNldFN1Y2Nlc3NvcnMo
bWVtY3B5KTsKKyAgICAgICAgbG9vcFBvc3Rmb290ZXItPmFkZFByZWRlY2Vzc29yKGRvQ29weUJv
ZHkpOworICAgICAgICBsb29wUHJlaGVhZGVyLT5zZXRTdWNjZXNzb3JzKGRvQ29weUJvZHkpOwor
CisgICAgICAgIGF1dG8gbG9vcEJvdW5kQnl0ZXMgPSBkb0NvcHlCb2R5LT5hcHBlbmROZXc8VmFs
dWU+KG1fcHJvYywgU2hsLCBvcmlnaW4sCisgICAgICAgICAgICBsb29wQm91bmQsCisgICAgICAg
ICAgICBkb0NvcHlCb2R5LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihtX3Byb2MsIG9yaWdpbiwg
V1RGOjpmYXN0TG9nMihlbGVtU2l6ZSkpKTsKIAogICAgICAgICBFZmZlY3RzIGVmZmVjdHMgPSBF
ZmZlY3RzOjpmb3JDYWxsKCk7Ci0gICAgICAgIG1lbWNweS0+YXBwZW5kTmV3PENDYWxsVmFsdWU+
KG1fcHJvYywgQjM6OlZvaWQsIG9yaWdpbiwgZWZmZWN0cywKLSAgICAgICAgICAgIG1lbWNweS0+
YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgb3JpZ2luLCB0YWdDRnVuY3Rpb248T3Bl
cmF0aW9uUHRyVGFnPihvcGVyYXRpb25GYXN0Rm9yd2FyZENvcHkzMikpLAotICAgICAgICAgICAg
ZGVzdGluYXRpb24tPmFwcGVuZEFkZHIobV9wcm9jLCBtZW1jcHksIGRlc3RpbmF0aW9uLT5hcnJh
eUJhc2UpLAotICAgICAgICAgICAgc291cmNlLT5hcHBlbmRBZGRyKG1fcHJvYywgbWVtY3B5LCBz
b3VyY2UtPmFycmF5QmFzZSksCi0gICAgICAgICAgICBsb29wQm91bmQpOworICAgICAgICBkb0Nv
cHlCb2R5LT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4obV9wcm9jLCBCMzo6Vm9pZCwgb3JpZ2luLCBl
ZmZlY3RzLAorICAgICAgICAgICAgb3BlcmF0aW9uRm9yRWxlbVNpemUoZG9Db3B5Qm9keSksCisg
ICAgICAgICAgICBtYWtlV2FzbUFkZHJlc3MoZG9Db3B5Qm9keSwgZGVzdGluYXRpb24tPmFwcGVu
ZEFkZHIobV9wcm9jLCBkb0NvcHlCb2R5LCBkZXN0aW5hdGlvbi0+YXJyYXlCYXNlKSwgZGVzdGlu
YXRpb24tPndhc21CYXNlR1BSKSwKKyAgICAgICAgICAgIG1ha2VXYXNtQWRkcmVzcyhkb0NvcHlC
b2R5LCBzb3VyY2UtPmFwcGVuZEFkZHIobV9wcm9jLCBkb0NvcHlCb2R5LCBzb3VyY2UtPmFycmF5
QmFzZSksIHNvdXJjZS0+d2FzbUJhc2VHUFIpLAorICAgICAgICAgICAgbG9vcEJvdW5kQnl0ZXMp
OwogCi0gICAgICAgIG1lbWNweS0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEp1bXAsIG9yaWdp
bik7CisgICAgICAgIGRvQ29weUJvZHktPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShtX3Byb2MsIEp1
bXAsIG9yaWdpbiwgRnJlcXVlbnRlZEJsb2NrKGxvb3BQb3N0Zm9vdGVyKSk7CiAgICAgfQogCi0g
ICAgYm9vbCBob2lzdFZhbHVlKEJhc2ljQmxvY2sqIGludG8sIFZhbHVlKiB2YWx1ZSwgYm9vbCBj
YW5NdXRhdGUgPSB0cnVlKQorICAgIGJvb2wgY2FuSG9pc3RWYWx1ZShCYXNpY0Jsb2NrKiBpbnRv
LCBWYWx1ZSogdmFsdWUsIEhhc2hTZXQ8VmFsdWUqPiBvYnNvbGV0ZVZhbHVlcykKICAgICB7CiAg
ICAgICAgIGlmIChtX3Byb2MuZG9taW5hdG9ycygpLmRvbWluYXRlcyh2YWx1ZS0+b3duZXIsIGlu
dG8pKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKKyAgICAgICAgYXV0byBub09ic29sZXRl
VmFsdWVzID0gSGFzaFNldDxWYWx1ZSo+IHsgfTsKKyAgICAgICAgYXV0byYgYWxsb3dlZENoaWxk
cmVuID0gb2Jzb2xldGVWYWx1ZXMuY29udGFpbnModmFsdWUpID8gb2Jzb2xldGVWYWx1ZXMgOiBu
b09ic29sZXRlVmFsdWVzOworCiAgICAgICAgIEVmZmVjdHMgZWZmZWN0cyA9IHZhbHVlLT5lZmZl
Y3RzKCk7Ci0gICAgICAgIGlmIChlZmZlY3RzICE9IEVmZmVjdHM6Om5vbmUoKSkgeworICAgICAg
ICBpZiAoZWZmZWN0cyAhPSBFZmZlY3RzOjpub25lKCkgJiYgIW9ic29sZXRlVmFsdWVzLmNvbnRh
aW5zKHZhbHVlKSkgewogICAgICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAgICAg
ZGF0YUxvZ0xuKCJDYW5ub3QgaG9pc3QgIiwgKnZhbHVlLCAiIGludG8gIiwgKmludG8sICIgc2lu
Y2UgaXQgaGFzIGVmZmVjdHMiKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
fQogCiAgICAgICAgIGZvciAoVmFsdWUqIGNoaWxkIDogdmFsdWUtPmNoaWxkcmVuKCkpIHsKLSAg
ICAgICAgICAgIGlmICghaG9pc3RWYWx1ZShpbnRvLCBjaGlsZCwgZmFsc2UpKQorICAgICAgICAg
ICAgaWYgKCFjYW5Ib2lzdFZhbHVlKGludG8sIGNoaWxkLCBhbGxvd2VkQ2hpbGRyZW4pKQogICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChjYW5N
dXRhdGUpIHsKLSAgICAgICAgICAgIGZvciAoVmFsdWUqIGNoaWxkIDogdmFsdWUtPmNoaWxkcmVu
KCkpCi0gICAgICAgICAgICAgICAgaG9pc3RWYWx1ZShpbnRvLCBjaGlsZCk7CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKworICAgIGJvb2wgaG9pc3RCbG9ja3MoQmFzaWNCbG9jayogaW50
bywgU21hbGxTZXQ8QmFzaWNCbG9jayo+JiBibG9ja3MsIEhhc2hTZXQ8VmFsdWUqPiBvYnNvbGV0
ZVZhbHVlcywgYm9vbCBjYW5NdXRhdGUgPSBmYWxzZSkKKyAgICB7CisgICAgICAgIGZvciAoQmFz
aWNCbG9jayogYmxvY2sgOiBtX3Byb2MuYmxvY2tzSW5QcmVPcmRlcigpKSB7CisgICAgICAgICAg
ICBpZiAoaW50byA9PSBibG9jayB8fCAhYmxvY2tzLmNvbnRhaW5zKGJsb2NrKSkKKyAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7
IGluZGV4IDwgYmxvY2stPnNpemUoKTsgKytpbmRleCkgeworICAgICAgICAgICAgICAgIFZhbHVl
KiYgdmFsdWUgPSBibG9jay0+YXQoaW5kZXgpOworICAgICAgICAgICAgICAgIGlmICh2YWx1ZS0+
b3Bjb2RlKCkgPT0gSnVtcCkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgICAgICAgICBpZiAoIWNhbkhvaXN0VmFsdWUoaW50bywgdmFsdWUsIG9ic29sZXRlVmFsdWVz
KSkgeworICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGRhdGFMb2dMbigiTm90IGJ5dGUgY29weSBsb29wLCBub2RlICIsICp2YWx1ZSwgIiBj
YW5ub3QgYmUgaG9pc3RlZCIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICB2YWx1ZS0+b3duZXItPmF0KHZhbHVlLT5p
bmRleCgpKSA9IG1fcHJvYy5hZGQ8VmFsdWU+KE5vcCwgVm9pZCwgdmFsdWUtPm9yaWdpbigpKTsK
LSAgICAgICAgICAgIGludG8tPmFwcGVuZE5vblRlcm1pbmFsKHZhbHVlKTsKKyAgICAgICAgICAg
ICAgICBpZiAob2Jzb2xldGVWYWx1ZXMuY29udGFpbnModmFsdWUpICYmIGNhbk11dGF0ZSkgewor
ICAgICAgICAgICAgICAgICAgICB2YWx1ZS0+cmVwbGFjZVdpdGhOb3BJZ25vcmluZ1R5cGUoKTsK
KyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFvYnNvbGV0ZVZhbHVlcy5jb250YWlucyh2YWx1
ZSkgJiYgY2FuTXV0YXRlKSB7CisgICAgICAgICAgICAgICAgICAgIGludG8tPmFwcGVuZE5vblRl
cm1pbmFsKHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBtX3Byb2MuYWRkPFZh
bHVlPihOb3AsIFZvaWQsIHZhbHVlLT5vcmlnaW4oKSk7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCisg
ICAgVmFsdWUqIG1ha2VXYXNtQWRkcmVzcyhCYXNpY0Jsb2NrKiBpbnRvLCBWYWx1ZSogcG9pbnRl
ciwgc3RkOjpvcHRpb25hbDxHUFJSZWc+IGJhc2VHUFIpCisgICAgeworICAgICAgICBpZiAoYmFz
ZUdQUikgeworICAgICAgICAgICAgcmV0dXJuIGludG8tPmFwcGVuZE5ldzxXYXNtQWRkcmVzc1Zh
bHVlPihtX3Byb2MsIHBvaW50ZXItPm9yaWdpbigpLAorICAgICAgICAgICAgICAgIGludG8tPmFw
cGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBaRXh0MzIsIHBvaW50ZXItPm9yaWdpbigpLCBwb2ludGVy
KSwgKmJhc2VHUFIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBwb2ludGVyOworICAgIH0K
KwogICAgIGJvb2wgcnVuKCkKICAgICB7CiAgICAgICAgIGlmICh2ZXJib3NlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlTG9vcFN0cmVuZ3RoLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VMb29wU3RyZW5ndGguaAppbmRleCA1MzVlNTY1
OTk3ZTE0YmNjNDUzNzYzODUwZmQzMWI0ZTEzOWY4MGNhLi5jMWUwYTBiY2FiNWFlMzkzMjIzOTA4
ZjMxN2FiZDY5ZTIxMzc4ZjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNSZWR1Y2VMb29wU3RyZW5ndGguaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNS
ZWR1Y2VMb29wU3RyZW5ndGguaApAQCAtMzcsMTA2ICszNyw5IEBAIGNsYXNzIFByb2NlZHVyZTsK
IAogYm9vbCByZWR1Y2VMb29wU3RyZW5ndGgoUHJvY2VkdXJlJik7CiAKLQotCi0jaWYgQ1BVKFg4
Nl82NCkKLS8qCi0gKiBUaGUgc2VtYW50aWNzIG9mIEIzIHJlcXVpcmUgdGhhdCBsb2FkcyBhbmQg
c3RvcmVzIGFyZSBub3QgcmVkdWNlZCBpbiBncmFudWxhcml0eS4KLSAqIElmIHdlIHdvdWxkIHVz
ZSBzeXN0ZW0gbWVtY3B5LCB0aGVuIGl0IGlzIHBvc3NpYmxlIHRoYXQgd2Ugd291bGQgZ2V0IGEg
Ynl0ZSBjb3B5IGxvb3AsCi0gKiBhbmQgdGhpcyBjb3VsZCBjYXVzZSBHQyB0ZWFyaW5nLgotICov
Ci1BTFdBWVNfSU5MSU5FIHZvaWQgZmFzdEZvcndhcmRDb3B5MzIodWludDMyX3QqIGRzdCwgY29u
c3QgdWludDMyX3QqIHNyYywgc2l6ZV90IHNpemUpCi17Ci0gICAgdWludDY0X3QgaTsKLSAgICBp
bnQ2NF90IGNvdW50ZXI7Ci0gICAgdWludDY0X3QgdG1wLCB0bXAyOwotCi0gICAgYXNtIHZvbGF0
aWxlKAotICAgICAgICAidGVzdCAlcVtzaXplXSwgJXFbc2l6ZV1cdFxuIgotICAgICAgICAianog
OTAwZlx0XG4iIC8vIGV4aXQKLSAgICAgICAgInhvcnEgJXFbaV0sICVxW2ldXHRcbiIKLSAgICAg
ICAgLy8gaWYgc2l6ZSA8IDgKLSAgICAgICAgImNtcCAkOCwgJXFbc2l6ZV1cdFxuIgotICAgICAg
ICAiamwgMTAwZlx0XG4iIC8vIGJhY2twb3JjaAotICAgICAgICAvLyBpZiAoZHN0ICsgc2l6ZSo0
IDw9IHNyYyB8fCBzcmMgKyBzaXplKjQgPD0gZHN0KQotICAgICAgICAibGVhcSAoJXFbc3JjXSwg
JXFbc2l6ZV0sIDQpLCAlcVt0bXBdXHRcbiIKLSAgICAgICAgImNtcCAlcVt0bXBdLCAlcVtkc3Rd
XHRcbiIKLSAgICAgICAgImphZSA1MDBmXHRcbiIgLy8gc2ltZCBubyBvdmVybGFwCi0gICAgICAg
ICJsZWFxICglcVtkc3RdLCAlcVtzaXplXSwgNCksICVxW3RtcF1cdFxuIgotICAgICAgICAiY21w
ICVxW3RtcF0sICVxW3NyY11cdFxuIgotICAgICAgICAiamFlIDUwMGZcdFxuIiAvLyBzaW1kIG5v
IG92ZXJsYXAKLSAgICAgICAgImptcCAxMDBmXHRcbiIgLy8gQmFja3BvcmNoCi0KLSAgICAgICAg
Ly8gQmFja3BvcmNoIChhc3N1bWVzIHdlIGNhbiB3cml0ZSBhdCBsZWFzdCBvbmUgaW50KQotICAg
ICAgICAiMTAwOlx0XG4iCi0gICAgICAgIC8vIGNvdW50ZXIgPSAoc2l6ZSAtIGkpJTQKLSAgICAg
ICAgIm1vdiAlcVtzaXplXSwgJXFbY291bnRlcl1cdFxuIgotICAgICAgICAic3VicSAlcVtpXSwg
JXFbY291bnRlcl1cdFxuIgotCi0gICAgICAgIC8vIElmIHdlIGFyZSBhIG11bHRpcGxlIG9mIDQs
IHVucm9sbCB0aGUgbG9vcAotICAgICAgICAvLyBXZSBhbHJlYWR5IGtub3cgd2UgYXJlIG5vbnpl
cm8KLSAgICAgICAgImFuZCAkMywgJXFbY291bnRlcl1cdFxuIgotICAgICAgICAianogMjAwZlx0
XG4iIC8vIHVucm9sbGVkIGxvb3AKLQotICAgICAgICAibmVncSAlcVtjb3VudGVyXVx0XG4iCi0g
ICAgICAgICIuYmFsaWduIDMyXHRcbiIKLSAgICAgICAgIjEwMTpcdFxuIgotICAgICAgICAibW92
ICglcVtzcmNdLCAlcVtpXSwgNCksICVrW3RtcF1cdFxuIgotICAgICAgICAibW92ICVrW3RtcF0s
ICglcVtkc3RdLCAlcVtpXSwgNClcdFxuIgotICAgICAgICAiaW5jcSAlcVtpXVx0XG4iCi0gICAg
ICAgICJpbmNxICVxW2NvdW50ZXJdXHRcbiIKLSAgICAgICAgImpueiAxMDFiXHRcbiIKLSAgICAg
ICAgLy8gRG8gd2Ugc3RpbGwgaGF2ZSBhbnl0aGluZyBsZWZ0PwotICAgICAgICAiY21wcSAlcVtz
aXplXSwgJXFbaV1cdFxuIgotICAgICAgICAiamUgOTAwZlx0XG4iIC8vIGV4aXQKLSAgICAgICAg
Ly8gVGhlbiBnbyB0byB0aGUgdW5yb2xsZWQgbG9vcAotICAgICAgICAiam1wIDIwMGZcdFxuIgot
Ci0gICAgICAgIC8vIFVucm9sbGVkIGxvb3AgKGFzc3VtZXMgbXVsdGlwbGUgb2YgNCwgY2FuIGRv
IG9uZSBpdGVyYXRpb24pCi0gICAgICAgICIyMDA6XHRcbiIKLSAgICAgICAgInNociAkMiwgJXFb
Y291bnRlcl1cdFxuIgotICAgICAgICAibmVncSAlcVtjb3VudGVyXVx0XG4iCi0gICAgICAgICIu
YmFsaWduIDMyXHRcbiIKLSAgICAgICAgIjIwMTpcdFxuIgotICAgICAgICAibW92ICglcVtzcmNd
LCAlcVtpXSwgNCksICVrW3RtcF1cdFxuIgotICAgICAgICAibW92ICVrW3RtcF0sICglcVtkc3Rd
LCAlcVtpXSwgNClcdFxuIgotICAgICAgICAibW92IDQoJXFbc3JjXSwgJXFbaV0sIDQpLCAla1t0
bXAyXVx0XG4iCi0gICAgICAgICJtb3YgJWtbdG1wMl0sIDQoJXFbZHN0XSwgJXFbaV0sIDQpXHRc
biIKLSAgICAgICAgIm1vdiA4KCVxW3NyY10sICVxW2ldLCA0KSwgJWtbdG1wMl1cdFxuIgotICAg
ICAgICAibW92ICVrW3RtcDJdLCA4KCVxW2RzdF0sICVxW2ldLCA0KVx0XG4iCi0gICAgICAgICJt
b3YgMTIoJXFbc3JjXSwgJXFbaV0sIDQpLCAla1t0bXBdXHRcbiIKLSAgICAgICAgIm1vdiAla1t0
bXBdLCAxMiglcVtkc3RdLCAlcVtpXSwgNClcdFxuIgotICAgICAgICAiYWRkcSAkNCwgJXFbaV1c
dFxuIgotICAgICAgICAiY21wcSAlcVtzaXplXSwgJXFbaV1cdFxuIgotICAgICAgICAiamIgMjAx
Ylx0XG4iCi0gICAgICAgICJqbXAgOTAwZlx0XG4iIC8vIGV4aXQKLQotICAgICAgICAvLyBzaW1k
IG5vIG92ZXJsYXAKLSAgICAgICAgLy8gY291bnRlciA9IC0oc2l6ZS84KTsKLSAgICAgICAgIjUw
MDpcdFxuIgotICAgICAgICAibW92ICVxW3NpemVdLCAlcVtjb3VudGVyXVx0XG4iCi0gICAgICAg
ICJzaHJxICQzLCAlcVtjb3VudGVyXVx0XG4iCi0gICAgICAgICJuZWdxICVxW2NvdW50ZXJdXHRc
biIKLSAgICAgICAgIi5iYWxpZ24gMzJcdFxuIgotICAgICAgICAiNTAxOlx0XG4iCi0gICAgICAg
ICJtb3Z1cHMgKCVxW3NyY10sICVxW2ldLCA0KSwgJSV4bW0wXHRcbiIKLSAgICAgICAgIm1vdnVw
cyAxNiglcVtzcmNdLCAlcVtpXSwgNCksICUleG1tMVx0XG4iCi0gICAgICAgICJtb3Z1cHMgJSV4
bW0wLCAoJXFbZHN0XSwgJXFbaV0sIDQpXHRcbiIKLSAgICAgICAgIm1vdnVwcyAlJXhtbTEsIDE2
KCVxW2RzdF0sICVxW2ldLCA0KVx0XG4iCi0gICAgICAgICJhZGRxICQ4LCAlcVtpXVx0XG4iCi0g
ICAgICAgICJpbmNxICVxW2NvdW50ZXJdXHRcbiIKLSAgICAgICAgImpueiA1MDFiXHRcbiIKLSAg
ICAgICAgLy8gaWYgKGkgPT0gc2l6ZSkKLSAgICAgICAgImNtcHEgJXFbc2l6ZV0sICVxW2ldXHRc
biIKLSAgICAgICAgImplIDkwMGZcdFxuIiAvLyBlbmQKLSAgICAgICAgImptcCAxMDBiXHRcbiIg
Ly8gYmFja3BvcmNoCi0gICAgICAgICI5MDA6XHRcbiIKLSAgICA6IFtpXSAiPSZjIiAoaSksIFtj
b3VudGVyXSAiPSZyIiAoY291bnRlciksIFt0bXBdICI9JmEiICh0bXApLCAgW3RtcDJdICI9JnIi
ICh0bXAyKQotICAgIDogW2RzdF0gIkQiIChkc3QpLCBbc3JjXSAiUyIgKHNyYyksIFtzaXplXSAi
ciIgKHNpemUpCi0gICAgOiAieG1tMCIsICJ4bW0xIik7Ci19Ci0KLUpTQ19ERUNMQVJFX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uRmFzdEZvcndhcmRDb3B5MzIsIHZvaWQsICh1aW50MzJfdCosIGNv
bnN0IHVpbnQzMl90Kiwgc2l6ZV90KSk7CisjaWYgQ09NUElMRVIoR0NDX0NPTVBBVElCTEUpICYm
IChDUFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpKQorSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25HQ1NhZmVNZW1tb3ZlNCwgdm9pZCwgKHVpbnQzMl90KiwgY29uc3QgdWludDMyX3Qq
LCBzaXplX3QpKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uR0NTYWZlTWVt
bW92ZTgsIHZvaWQsIChKU1ZhbHVlKiwgY29uc3QgSlNWYWx1ZSosIHNpemVfdCkpOwogI2VuZGlm
CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCAwMzllNzY5ZGNlNzc3Mzk2MDhmODNkNjEz
ODM5Y2E2MDYyY2E3ZjgwLi4zODVlOWM4ZGY1MTYzYWZmYWYwYzI4ZDNjYTA0NDUxOTdiYWZlOTU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cApAQCAtNDY1Niw2ICs0NjU2LDIwIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5
SWQoCiAgICAgfQogCiAgICAgQVNTRVJUKHR5cGUgPT0gQWNjZXNzVHlwZTo6R2V0QnlJZCB8fCB0
eXBlID09IEFjY2Vzc1R5cGU6OkdldEJ5SWREaXJlY3QgfHwgICFnZXRCeVN0YXR1cy5tYWtlc0Nh
bGxzKCkpOworCisgICAgLy8gVGhlIGxlbmd0aCBwcm9wZXJ0eSBmb3IgdHlwZWQgYXJyYXlzIGlz
IHNwZWNpYWwgaW4gdGhlIEZUTCwgc28gd2Ugc2hvdWxkIHRyeSBoYXJkZXIgdG8gb3B0aW1pemUg
Zm9yIGl0LgorICAgIGlmIChPcHRpb25zOjp1c2VBY2Nlc3NJbmxpbmluZygpCisgICAgICAgICYm
IG1fZ3JhcGgubV9wbGFuLmlzRlRMKCkKKyAgICAgICAgJiYgKCFnZXRCeVN0YXR1cy5pc1NldCgp
IHx8ICFnZXRCeVN0YXR1cy5udW1WYXJpYW50cygpKQorICAgICAgICAmJiBpZGVudGlmaWVyID09
IG1fdm0tPnByb3BlcnR5TmFtZXMtPmxlbmd0aAorICAgICAgICAmJiAhbV9pbmxpbmVTdGFja1Rv
cC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgSW5hZGVxdWF0ZUNv
dmVyYWdlKSkgeworCisgICAgICAgIGFkZFRvR3JhcGgoRm9yY2VPU1JFeGl0KTsKKyAgICAgICAg
c2V0KGRlc3RpbmF0aW9uLAorICAgICAgICAgICAgYWRkVG9HcmFwaChnZXRCeUlkLCBPcEluZm8o
aWRlbnRpZmllciksIE9wSW5mbyhwcmVkaWN0aW9uKSwgYmFzZSkpOworICAgICAgICByZXR1cm47
CisgICAgfQorCiAgICAgaWYgKCFnZXRCeVN0YXR1cy5pc1NpbXBsZSgpIHx8ICFnZXRCeVN0YXR1
cy5udW1WYXJpYW50cygpIHx8ICFPcHRpb25zOjp1c2VBY2Nlc3NJbmxpbmluZygpKSB7CiAgICAg
ICAgIHNldChkZXN0aW5hdGlvbiwKICAgICAgICAgICAgIGFkZFRvR3JhcGgoZ2V0QnlJZCwgT3BJ
bmZvKGlkZW50aWZpZXIpLCBPcEluZm8ocHJlZGljdGlvbiksIGJhc2UpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDTWVtb3J5T3BlcmF0aW9ucy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvR0NNZW1vcnlPcGVyYXRpb25zLmgKaW5kZXggNWQ5MjYzMmMw
YmYwNGMyMWUyNzQ2NTEwNGE1MTE0YWYxZTY4OGQyYi4uZTg5YjAwYWQ3NTAxYzE4MmQyNDc0N2Mw
MTJkMTg5N2FjOWMyY2M0NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
R0NNZW1vcnlPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NN
ZW1vcnlPcGVyYXRpb25zLmgKQEAgLTQwLDcgKzQwLDcgQEAgY29uc3RleHByIHNpemVfdCBtZWRp
dW1DdXRvZmYgPSA0ICogMTAyNDsKIAogLy8gVGhpcyBpcyBhIGZvcndhcmRzIGxvb3Agc28gZ2NT
YWZlTWVtbW92ZSBjYW4gcmVseSBvbiB0aGUgZGlyZWN0aW9uLiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgotQUxXQVlTX0lOTElORSB2b2lkIGdjU2FmZU1lbWNweShUKiBkc3QsIFQqIHNyYywgc2l6
ZV90IGJ5dGVzKQorQUxXQVlTX0lOTElORSB2b2lkIGdjU2FmZU1lbWNweShUKiBkc3QsIGNvbnN0
IFQqIHNyYywgc2l6ZV90IGJ5dGVzKQogewogICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFQpID09
IHNpemVvZihKU1ZhbHVlKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoYnl0ZXMgJSA4ID09IDApOwpA
QCAtMTQ0LDcgKzE0NCw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBnY1NhZmVNZW1jcHkoVCogZHN0
LCBUKiBzcmMsIHNpemVfdCBieXRlcykKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1BTFdB
WVNfSU5MSU5FIHZvaWQgZ2NTYWZlTWVtbW92ZShUKiBkc3QsIFQqIHNyYywgc2l6ZV90IGJ5dGVz
KQorQUxXQVlTX0lOTElORSB2b2lkIGdjU2FmZU1lbW1vdmUoVCogZHN0LCBjb25zdCBUKiBzcmMs
IHNpemVfdCBieXRlcykKIHsKICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihUKSA9PSBzaXplb2Yo
SlNWYWx1ZSkpOwogICAgIFJFTEVBU0VfQVNTRVJUKGJ5dGVzICUgOCA9PSAwKTsKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOWVlYTEyNWNm
N2RkYWEzOTViZTk0MGMyNTVmYmE3OTI0MDdlYTBkOS4uZTY4OTczMTQ2ZDllNzRkZDk5OGQ0MTIw
NjMyYzJjNzUwMDhiMzkyYyAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wOS0yOCAgSnVzdGluIE1pY2hh
dWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNlIGxvb3Agc3Ry
ZW5ndGggb24gQVJNNjQgdG9vCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzA5MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHN0cmVzcy90eXBlZGFycmF5LWxlbmd0aC1jYWNoaW5nLmpzOiBBZGRlZC4K
KyAgICAgICAgKHNob3VsZEJlR2V0TGVuZ3RoKToKKyAgICAgICAgKG5vSW5saW5lLnNob3VsZEJl
R2V0TGVuZ3RoLnNob3VsZEJlR2V0QnlJZCk6CisgICAgICAgIChpLnNob3VsZEJlR2V0TGVuZ3Ro
LnR5cGVkQXJyYXkubGV0LnRyaWNreUFycmF5Lm5ldy5JbnQzMkFycmF5LjEwMC50cmlja3lBcnJh
eS5fX3Byb3RvX18uZ2V0IGxlbmd0aCk6CisKIDIwMjEtMDktMjEgIEp1c3RpbiBNaWNoYXVkICA8
anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgogCiAgICAgICAgIERpZmZlcmVudGlhbCB0ZXN0aW5n
OiBsaXZlIHN0YXRlbWVudCBkb24ndCBleGVjdXRlCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy90eXBlZGFycmF5LWxlbmd0aC1jYWNoaW5nLmpzIGIvSlNUZXN0cy9zdHJlc3MvdHlwZWRhcnJh
eS1sZW5ndGgtY2FjaGluZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZDYwOTc1M2RkOTE3MTMzZGRiNGUyNDdk
NTA2ZDBjNWIyNWMwOTJlCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdHlwZWRh
cnJheS1sZW5ndGgtY2FjaGluZy5qcwpAQCAtMCwwICsxLDI2IEBACisvL0Agc2tpcCBpZiBub3Qg
JGppdFRlc3RzCitmdW5jdGlvbiBzaG91bGRCZUdldExlbmd0aChhcnIxKSB7ICAgIAorICAgIGZv
ciAobGV0IGk9MDsgaTxhcnIxLmxlbmd0aDsgKytpKSB7CisgICAgICAgIGFycjFbaV0gPSAwCisg
ICAgfQorfQorbm9JbmxpbmUoc2hvdWxkQmVHZXRMZW5ndGgpCisKK2Z1bmN0aW9uIHNob3VsZEJl
R2V0QnlJZChhcnIxKSB7ICAgIAorICAgIGZvciAobGV0IGk9MDsgaTxhcnIxLmxlbmd0aDsgKytp
KSB7CisgICAgICAgIGFycjFbaV0gPSAwCisgICAgfQorfQorbm9JbmxpbmUoc2hvdWxkQmVHZXRC
eUlkKQorCitsZXQgdHlwZWRBcnJheSA9IG5ldyBJbnQzMkFycmF5KDEwMCkKK2ZvciAobGV0IGk9
MDsgaTwxZTc7ICsraSkgc2hvdWxkQmVHZXRMZW5ndGgodHlwZWRBcnJheSkKKworbGV0IHRyaWNr
eUFycmF5ID0gbmV3IEludDMyQXJyYXkoMTAwKQordHJpY2t5QXJyYXkuX19wcm90b19fID0geyBn
ZXQgbGVuZ3RoKCkgeyByZXR1cm4gMTAwMCB9IH0KKworZm9yIChsZXQgaT0wOyBpPDFlNjsgKytp
KSBzaG91bGRCZUdldEJ5SWQodHJpY2t5QXJyYXkpCisKK3Nob3VsZEJlR2V0TGVuZ3RoKHRyaWNr
eUFycmF5KQorCisK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439678</attachid>
            <date>2021-09-29 16:17:52 -0700</date>
            <delta_ts>2021-09-29 22:05:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230908-20210929161752.patch</filename>
            <type>text/plain</type>
            <size>30297</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzMjc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ODQwMTRhN2ZkZjVkN2ZlN2I4NzY4OTAwNDAxN2U0N2Y4YTcwYTdmLi45YThlMGFiYjE4MjY5NTA1
NzE3ZWEzZmNmMzM2YTFjYjIzZGYzYTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NSBAQAorMjAyMS0wOS0yOCAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBh
cHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNlIGxvb3Agc3RyZW5ndGggb24gQVJNNjQgdG9vCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzA5MDgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgUmVk
dWNlTG9vcFN0cmVuZ3RoIHRvOgorICAgICAgICAtIFN1cHBvcnQgV2FzbUFkZHJlc3MKKyAgICAg
ICAgLSBTdXBwb3J0IGkgIT0gc2l6ZSBleGl0IGNvbmRpdGlvbgorICAgICAgICAtIFN1cHBvcnQg
OCBiaXQgdmFsdWVzIHRvbywgYW5kIHVzZSBvdXIgZ2VuZXJpYyBtZW1tb3ZlIGluc3RlYWQgb2Yg
dGhlIGV4aXN0aW5nIGlubGluZWQgb25lCisgICAgICAgIC0gU3VwcG9ydCBBUk02NAorICAgICAg
ICAtIEZpeCB0aGUgYnJva2VuIGhvaXN0aW5nIGxvZ2ljIHRvIGJlIG1vcmUgY29uc2VydmF0aXZl
CisKKyAgICAgICAgV2Ugc2hvdWxkIGNsZWFuIHRoaXMgdXAgdG8gbWFrZSBtYXRjaGluZyBhbmQg
bWF0ZXJpYWxpemluZyBtb3JlIGxvb3AgcGF0dGVybnMgZWFzaWVyLiBXZSBzaG91bGQKKyAgICAg
ICAgYWxzbyBjb25zaWRlciB1cGRhdGluZyB0aGlzIHdoZW4gd2UgaW1wbGVtZW50IHRoZSBtZW1j
cHkgaW5zdHJ1Y3Rpb24uCisKKyAgICAgICAgKHNlcGFyYXRlIHBhdGNoLCBidXQgdG9nZXRoZXIg
Zm9yIHBlcmYgdGVzdGluZykKKyAgICAgICAgVHlwZWQgYXJyYXlzIHNob3VsZCBGb3JjZU9TUkV4
aXQgd2hlbiB0aGV5IHNlZSBhIEdldEJ5SUQgZm9yIGxlbmd0aCB3aXRoIG5vIHByb2ZpbGluZyBp
bmZvcm1hdGlvbiBpbiBGVEwuCisgICAgICAgIElkZWFsbHksIHRoZSBMTGludCB3b3VsZCBjb2xs
ZWN0IGluZm9ybWF0aW9uIGluIHRoaXMgY2FzZSwgYnV0IGl0IHdvdWxkIG5lZWQgdG8gY29sbGVj
dCBtb3JlCisgICAgICAgIGluZm8gdGhhbiBpcyB0eXBpY2FsbHkgY29sbGVjdGVkICh3aGljaCBt
aWdodCBiZSBhIHBlcmYgcmVncmVzc2lvbikgYmVjYXVzZSBUeXBlZEFycmF5cyB1c2UgYW4gCisg
ICAgICAgIGludHJpbnNpYyBnZXR0ZXIuIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2Ugb3RoZXJ3
aXNlLCB0aGUgRlRMJ3MgSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uIHBoYXNlIGlzIGVudGlyZWx5
CisgICAgICAgIHVzZWxlc3MgZm9yIFR5cGVkQXJyYXlzLCBkZXBlbmRlbnQgb24gaG93IHdlIHR1
bmUvdGltZSB0aGUgRlRMIHRpZXIgdXAuCisKKyAgICAgICAgV2Ugc2hvdWxkIGNvbnNpZGVyIGNh
Y2hpbmcgaW50cmluc2ljIGdldHRlcnMgaW4gdGhlIExMaW50IGluIGdlbmVyYWwgaWYgdGhhdCB3
b3VsZAorICAgICAgICBiZSBwcm9maXRhYmxlIGluc3RlYWQuCisKKyAgICAgICAgKiBiMy9CM1Jl
ZHVjZUxvb3BTdHJlbmd0aC5jcHA6CisgICAgICAgIChKU0M6OkIzOjpKU0NfREVGSU5FX0pJVF9P
UEVSQVRJT04pOgorICAgICAgICAoSlNDOjpCMzo6UmVkdWNlTG9vcFN0cmVuZ3RoOjpyZWR1Y2VC
eXRlQ29weUxvb3BzVG9NZW1jcHkpOgorICAgICAgICAoSlNDOjpCMzo6UmVkdWNlTG9vcFN0cmVu
Z3RoOjpjYW5Ib2lzdFZhbHVlKToKKyAgICAgICAgKEpTQzo6QjM6OlJlZHVjZUxvb3BTdHJlbmd0
aDo6aG9pc3RCbG9ja3MpOgorICAgICAgICAoSlNDOjpCMzo6UmVkdWNlTG9vcFN0cmVuZ3RoOjpt
YWtlV2FzbUFkZHJlc3MpOgorICAgICAgICAoSlNDOjpCMzo6UmVkdWNlTG9vcFN0cmVuZ3RoOjpo
b2lzdFZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKiBiMy9CM1JlZHVjZUxvb3BTdHJlbmd0aC5o
OgorICAgICAgICAoSlNDOjpCMzo6ZmFzdEZvcndhcmRDb3B5MzIpOiBEZWxldGVkLgorICAgICAg
ICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQpOgorICAgICAgICAqIGhlYXAvR0NNZW1vcnlPcGVyYXRp
b25zLmg6CisgICAgICAgIChKU0M6OmdjU2FmZU1lbWNweSk6CisgICAgICAgIChKU0M6OmdjU2Fm
ZU1lbW1vdmUpOgorCiAyMDIxLTA5LTI5ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5j
b20+CiAKICAgICAgICAgW0pTQ10gUmVtb3ZlIENvZGVCbG9jazo6bV9sbGludEV4ZWN1dGVDb3Vu
dGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VMb29wU3Ry
ZW5ndGguY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlTG9vcFN0cmVuZ3Ro
LmNwcAppbmRleCBjNWFlZDQ0YmQ3ZTA2M2EyZTk5OTdjZDQ4ZWIzNjRkMmZkZGE0MjBlLi5jNDlm
YjNlNjRjMWVkY2U5NDcyZmVjNTlmOTlhM2Q0OWE3ZjViZGMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VMb29wU3RyZW5ndGguY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZUxvb3BTdHJlbmd0aC5jcHAKQEAgLTM2LDE1ICszNiwy
NSBAQAogI2luY2x1ZGUgIkIzUGhhc2VTY29wZS5oIgogI2luY2x1ZGUgIkIzUHJvY2VkdXJlSW5s
aW5lcy5oIgogI2luY2x1ZGUgIkIzVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiR0NNZW1vcnlP
cGVyYXRpb25zLmgiCiAjaW5jbHVkZSA8d3RmL1NtYWxsU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAotI2lmIENQVShYODZf
NjQpCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRmFzdEZvcndhcmRDb3B5MzIs
IHZvaWQsICh1aW50MzJfdCogZHN0LCBjb25zdCB1aW50MzJfdCogc3JjLCBzaXplX3Qgc2l6ZSkp
CisjaWYgQ09NUElMRVIoR0NDX0NPTVBBVElCTEUpICYmIChDUFUoWDg2XzY0KSB8fCBDUFUoQVJN
NjQpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdDU2FmZU1lbW1vdmU0LCB2
b2lkLCAodWludDMyX3QqIGRzdCwgY29uc3QgdWludDMyX3QqIHNyYywgc2l6ZV90IGJ5dGVzKSkK
IHsKLSAgICByZXR1cm4gZmFzdEZvcndhcmRDb3B5MzIoZHN0LCBzcmMsIHNpemUpOworICAgIHN0
YXRpY19hc3NlcnQoc2l6ZW9mKEpTVmFsdWUpID4gc2l6ZW9mKHVpbnQzMl90KSk7CisgICAgLy8g
U2luY2Ugd2UgYXJlIHNtYWxsZXIgdGhhbiBhIEpTVmFsdWUsIHdlIGNhbm5vdCBiZSBhIHBvaW50
ZXIgdGhhdCB0aGUgR0MgY2FuIG1hcmsuCisgICAgLy8gVE9ETzogd2FzbSBnYz8gSSBmZWVsIGxp
a2UgdGhpcyB3YXMgd3JvbmcgZm9yIHNvbWUgcmVhc29uCisgICAgbWVtbW92ZShkc3QsIHNyYywg
Ynl0ZXMpOworfQorCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uR0NTYWZlTWVt
bW92ZTgsIHZvaWQsIChKU1ZhbHVlKiBkc3QsIGNvbnN0IEpTVmFsdWUqIHNyYywgc2l6ZV90IGJ5
dGVzKSkKK3sKKyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihKU1ZhbHVlKSA9PSBzaXplb2YodWlu
dDY0X3QpKTsKKyAgICBnY1NhZmVNZW1tb3ZlKGRzdCwgc3JjLCBieXRlcyk7CiB9CiAjZW5kaWYK
IApAQCAtNjIsNiArNzIsOCBAQCBjbGFzcyBSZWR1Y2VMb29wU3RyZW5ndGggewogCiAgICAgICAg
IFZhbHVlKiBhcnJheUJhc2U7CiAgICAgICAgIFZhbHVlKiBpbmRleDsKKworICAgICAgICBzdGQ6
Om9wdGlvbmFsPEdQUlJlZz4gd2FzbUJhc2VHUFI7CiAgICAgfTsKIAogcHVibGljOgpAQCAtNzQs
NyArODYsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotI2lmIENQVShYODZfNjQpCisjaWYg
Q09NUElMRVIoR0NDX0NPTVBBVElCTEUpICYmIChDUFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpKQog
ICAgIHZvaWQgcmVkdWNlQnl0ZUNvcHlMb29wc1RvTWVtY3B5KCkKICAgICB7CiAgICAgICAgIEhh
c2hTZXQ8VmFsdWUqPiBwYXR0ZXJuTWF0Y2hlZFZhbHVlczsKQEAgLTg2LDIxICs5OCw0NSBAQCBw
dWJsaWM6CiAKICAgICAgICAgVmFsdWUqIGxvYWQgPSBzdG9yZS0+Y2hpbGQoMCk7CiAgICAgICAg
IHVpbnQzMl90IGVsZW1TaXplID0gc2l6ZW9mVHlwZShsb2FkLT50eXBlKCkpOwotICAgICAgICBp
ZiAobG9hZC0+b3Bjb2RlKCkgIT0gTG9hZCB8fCBlbGVtU2l6ZSAhPSA0KQotICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICBwYXR0ZXJuTWF0Y2hlZFZhbHVlcy5hZGQobG9hZCk7CiAKKyAgICAg
ICAgc3RkOjpmdW5jdGlvbjxWYWx1ZSooQmFzaWNCbG9jayopPiBvcGVyYXRpb25Gb3JFbGVtU2l6
ZSA9IG51bGxwdHI7CisgICAgICAgIGlmIChlbGVtU2l6ZSA9PSA0KSB7CisgICAgICAgICAgICBv
cGVyYXRpb25Gb3JFbGVtU2l6ZSA9IFs9XShCYXNpY0Jsb2NrKiBiKSB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGItPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihtX3Byb2MsIGxvYWQtPm9yaWdp
bigpLCB0YWdDRnVuY3Rpb248T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25HQ1NhZmVNZW1tb3Zl
NCkpOworICAgICAgICAgICAgfTsKKyAgICAgICAgfSBlbHNlIGlmIChlbGVtU2l6ZSA9PSA4KSB7
CisgICAgICAgICAgICBvcGVyYXRpb25Gb3JFbGVtU2l6ZSA9IFs9XShCYXNpY0Jsb2NrKiBiKSB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIGItPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihtX3By
b2MsIGxvYWQtPm9yaWdpbigpLCB0YWdDRnVuY3Rpb248T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRp
b25HQ1NhZmVNZW1tb3ZlNCkpOworICAgICAgICAgICAgfTsKKyAgICAgICAgfQorCisgICAgICAg
IGlmIChsb2FkLT5vcGNvZGUoKSAhPSBMb2FkIHx8ICFvcGVyYXRpb25Gb3JFbGVtU2l6ZSkKKyAg
ICAgICAgICAgIHJldHVybjsKKwogICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgIGRh
dGFMb2dMbigiRm91bmQgc3RvcmUvbG9hZDoiLCAqc3RvcmUpOwogCiAgICAgICAgIGF1dG8gZXh0
cmFjdEFycmF5SW5mbyA9IFsmXSAoVmFsdWUqIHZhbHVlKSAtPiBzdGQ6Om9wdGlvbmFsPEFkZHJJ
bmZvPiB7Ci0gICAgICAgICAgICBwYXR0ZXJuTWF0Y2hlZFZhbHVlcy5hZGQodmFsdWUpOwotCiAg
ICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPEFkZHJJbmZvPiBhZGRyID0geyBBZGRySW5mbygpIH07
CiAKICAgICAgICAgICAgIFZhbHVlKiBzdW0gPSB2YWx1ZTsKLSAgICAgICAgICAgIGlmICh2YWx1
ZS0+b3Bjb2RlKCkgPT0gWkV4dDMyKQorICAgICAgICAgICAgcGF0dGVybk1hdGNoZWRWYWx1ZXMu
YWRkKHN1bSk7CisKKyAgICAgICAgICAgIGlmIChzdW0tPm9wY29kZSgpID09IFdhc21BZGRyZXNz
KSB7CisgICAgICAgICAgICAgICAgV2FzbUFkZHJlc3NWYWx1ZSogd2FzbUFkZHJlc3MgPSBzdW0t
PmFzPFdhc21BZGRyZXNzVmFsdWU+KCk7CisgICAgICAgICAgICAgICAgYWRkci0+d2FzbUJhc2VH
UFIgPSB7IHdhc21BZGRyZXNzLT5waW5uZWRHUFIoKSB9OworICAgICAgICAgICAgICAgIHN1bSA9
IHdhc21BZGRyZXNzLT5jaGlsZCgwKTsKKyAgICAgICAgICAgICAgICBwYXR0ZXJuTWF0Y2hlZFZh
bHVlcy5hZGQoc3VtKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHN1bS0+b3Bj
b2RlKCkgPT0gWkV4dDMyKSB7CiAgICAgICAgICAgICAgICAgc3VtID0gc3VtLT5jaGlsZCgwKTsK
KyAgICAgICAgICAgICAgICBwYXR0ZXJuTWF0Y2hlZFZhbHVlcy5hZGQoc3VtKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgZGF0YUxv
Z0xuKCJFeGFtaW5pbmcgYXJyYXkgIiwgKnZhbHVlLCAiLCBmb3VuZCBzdW0gIiwgKnN1bSk7CiAK
ICAgICAgICAgICAgIGlmIChzdW0tPm9wY29kZSgpICE9IEFkZCB8fCBzdW0tPm51bUNoaWxkcmVu
KCkgIT0gMikKICAgICAgICAgICAgICAgICByZXR1cm4geyB9OwpAQCAtMTEwLDE5ICsxNDYsMzQg
QEAgcHVibGljOgogICAgICAgICAgICAgICAgIC8vIE1hdGNoIGFyckJhc2VbaSplbGVtU2l6ZV0K
ICAgICAgICAgICAgICAgICBpZiAodmFsdWUtPm9wY29kZSgpID09IFNobAogICAgICAgICAgICAg
ICAgICAgICAmJiB2YWx1ZS0+Y2hpbGQoMCktPm9wY29kZSgpID09IFBoaQotICAgICAgICAgICAg
ICAgICAgICAmJiB2YWx1ZS0+Y2hpbGQoMSktPmlzSW50KFdURjo6ZmFzdExvZzIoZWxlbVNpemUp
KSkKKyAgICAgICAgICAgICAgICAgICAgJiYgdmFsdWUtPmNoaWxkKDEpLT5pc0ludChXVEY6OmZh
c3RMb2cyKGVsZW1TaXplKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgcGF0dGVybk1hdGNoZWRW
YWx1ZXMuYWRkKHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgcGF0dGVybk1hdGNoZWRWYWx1
ZXMuYWRkKHZhbHVlLT5jaGlsZCgwKSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1
ZS0+Y2hpbGQoMCk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmICh2YWx1
ZS0+b3Bjb2RlKCkgPT0gU2hsCiAgICAgICAgICAgICAgICAgICAgICYmIHZhbHVlLT5jaGlsZCgw
KS0+b3Bjb2RlKCkgPT0gWkV4dDMyCiAgICAgICAgICAgICAgICAgICAgICYmIHZhbHVlLT5jaGls
ZCgwKS0+Y2hpbGQoMCktPm9wY29kZSgpID09IFBoaQotICAgICAgICAgICAgICAgICAgICAmJiB2
YWx1ZS0+Y2hpbGQoMSktPmlzSW50KFdURjo6ZmFzdExvZzIoZWxlbVNpemUpKSkKKyAgICAgICAg
ICAgICAgICAgICAgJiYgdmFsdWUtPmNoaWxkKDEpLT5pc0ludChXVEY6OmZhc3RMb2cyKGVsZW1T
aXplKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgcGF0dGVybk1hdGNoZWRWYWx1ZXMuYWRkKHZh
bHVlKTsKKyAgICAgICAgICAgICAgICAgICAgcGF0dGVybk1hdGNoZWRWYWx1ZXMuYWRkKHZhbHVl
LT5jaGlsZCgwKSk7CisgICAgICAgICAgICAgICAgICAgIHBhdHRlcm5NYXRjaGVkVmFsdWVzLmFk
ZCh2YWx1ZS0+Y2hpbGQoMCktPmNoaWxkKDApKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHZhbHVlLT5jaGlsZCgwKS0+Y2hpbGQoMCk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgfTsKIAogICAgICAgICAgICAgLy8g
VHJ5IHRvIGZpbmQgYSBrbm93biBwYXR0ZXJuIGFwcGxpZWQgdG8gYSBzaW5nbGUgcGhpLCB3aGlj
aCB3ZSBjYW4gYXNzdW1lIGlzIG91ciBsb29wIGluZGV4LgogICAgICAgICAgICAgVmFsdWUqIGxl
ZnQgPSBleHRyYWN0TG9vcEluZGV4SW5TdWJ0cmVlKHN1bS0+Y2hpbGQoMCkpOwogICAgICAgICAg
ICAgVmFsdWUqIHJpZ2h0ID0gZXh0cmFjdExvb3BJbmRleEluU3VidHJlZShzdW0tPmNoaWxkKDEp
KTsKKworICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgICAgICAgICBpZiAobGVm
dCkKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJMZWZ0OiAiLCAqbGVmdCk7CisgICAg
ICAgICAgICAgICAgaWYgKHJpZ2h0KQorICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG4oIlJp
Z2h0OiAiLCAqcmlnaHQpOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBpZiAobGVmdCAm
JiAhcmlnaHQpIHsKICAgICAgICAgICAgICAgICBhZGRyLT5pbmRleCA9IGxlZnQ7CiAgICAgICAg
ICAgICAgICAgYWRkci0+YXJyYXlCYXNlID0gc3VtLT5jaGlsZCgxKTsKQEAgLTEzMyw3ICsxODQs
NiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgICAgICAgICAg
cGF0dGVybk1hdGNoZWRWYWx1ZXMuYWRkKGFkZHItPmluZGV4KTsKLSAgICAgICAgICAgIHBhdHRl
cm5NYXRjaGVkVmFsdWVzLmFkZChhZGRyLT5hcnJheUJhc2UpOwogCiAgICAgICAgICAgICByZXR1
cm4gYWRkcjsKICAgICAgICAgfTsKQEAgLTE0MSwyMCArMTkxLDM1IEBAIHB1YmxpYzoKICAgICAg
ICAgYXV0byBkZXN0aW5hdGlvbiA9IGV4dHJhY3RBcnJheUluZm8oc3RvcmUtPmNoaWxkKDEpKTsK
ICAgICAgICAgYXV0byBzb3VyY2UgPSBleHRyYWN0QXJyYXlJbmZvKGxvYWQtPmNoaWxkKDApKTsK
IAorICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICAgICAgZGF0YUxvZygiRXhhbWluaW5n
IGFycmF5IGluZm86ICIpOworICAgICAgICAgICAgaWYgKHNvdXJjZSkKKyAgICAgICAgICAgICAg
ICBkYXRhTG9nKCpzb3VyY2UtPmFycmF5QmFzZSwgIlsiLCAqc291cmNlLT5pbmRleCwgIl0iKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCJudWxsW251bGxdIik7
CisgICAgICAgICAgICBkYXRhTG9nKCIgPSAiKTsKKyAgICAgICAgICAgIGlmIChkZXN0aW5hdGlv
bikKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCpkZXN0aW5hdGlvbi0+YXJyYXlCYXNlLCAiWyIs
ICpkZXN0aW5hdGlvbi0+aW5kZXgsICJdIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgZGF0YUxvZygibnVsbFtudWxsXSIpOworICAgICAgICAgICAgZGF0YUxvZ0xuKCk7Cisg
ICAgICAgIH0KKwogICAgICAgICBpZiAoIXNvdXJjZSB8fCAhZGVzdGluYXRpb24gfHwgc291cmNl
LT5pbmRleCAhPSBkZXN0aW5hdGlvbi0+aW5kZXgpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAg
ICAgICAgaWYgKGRlc3RpbmF0aW9uLT5hcnJheUJhc2UtPnR5cGUoKSAhPSBJbnQ2NCB8fCBzb3Vy
Y2UtPmFycmF5QmFzZS0+dHlwZSgpICE9IEludDY0KQorICAgICAgICBpZiAoIWRlc3RpbmF0aW9u
LT5hcnJheUJhc2UtPnR5cGUoKS5pc051bWVyaWMoKSB8fCAhc291cmNlLT5hcnJheUJhc2UtPnR5
cGUoKS5pc051bWVyaWMoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAodmVy
Ym9zZSkKLSAgICAgICAgICAgIGRhdGFMb2dMbigiRm91bmQgYXJyYXkgaW5mbzogIiwgKnNvdXJj
ZS0+YXJyYXlCYXNlLCAiWyIsICpzb3VyY2UtPmluZGV4LCAiXSA9ICIsICpkZXN0aW5hdGlvbi0+
YXJyYXlCYXNlLCAiWyIsICpkZXN0aW5hdGlvbi0+aW5kZXgsICJdIik7Ci0KICAgICAgICAgLy8g
RmluZCB0aGUgbG9vcCBoZWFkZXIsIGZvb3RlciBhbmQgaW5uZXIgYmxvY2tzLgogICAgICAgICAv
LyBWZXJpZnkgdGhhdCB0aGVyZSBpcyBvbmUgZW50cmFuY2UgdG8gYW5kIG9uZSBleGl0IGZyb20g
dGhlIGxvb3AuCiAgICAgICAgIGF1dG8qIGxvb3AgPSBtX3Byb2MubmF0dXJhbExvb3BzKCkuaW5u
ZXJNb3N0TG9vcE9mKG1fYmxvY2spOwogICAgICAgICBpZiAoIWxvb3ApCiAgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBkYXRhTG9nTG4oIlR5
cGVzIGFyZSBnb29kLCBmb3VuZCBuYXR1cmFsIGxvb3AgIiwgKmxvb3ApOworCiAgICAgICAgIEJh
c2ljQmxvY2sqIGxvb3BIZWFkID0gbG9vcC0+aGVhZGVyKCk7CiAgICAgICAgIEJhc2ljQmxvY2sq
IGxvb3BGb290ID0gbnVsbHB0cjsKICAgICAgICAgQmFzaWNCbG9jayogbG9vcFByZWhlYWRlciA9
IG51bGxwdHI7CkBAIC0yNTIsNiArMzE3LDkgQEAgcHVibGljOgogCiAgICAgICAgICAgICB1cGRh
dGVJbmRleCA9IHVwZGF0ZUluZGV4LT5jaGlsZCgwKTsKICAgICAgICAgICAgIHN0YXJ0aW5nSW5k
ZXggPSBzdGFydGluZ0luZGV4LT5jaGlsZCgwKTsKKyAgICAgICAgICAgIHBhdHRlcm5NYXRjaGVk
VmFsdWVzLmFkZCh1cGRhdGVJbmRleCk7CisgICAgICAgICAgICBwYXR0ZXJuTWF0Y2hlZFZhbHVl
cy5hZGQoc3RhcnRpbmdJbmRleCk7CisKICAgICAgICAgICAgIGlmICh1cGRhdGVJbmRleC0+b3Bj
b2RlKCkgIT0gQWRkIHx8ICF1cGRhdGVJbmRleC0+Y2hpbGQoMSktPmlzSW50KDEpIHx8IHVwZGF0
ZUluZGV4LT5jaGlsZCgwKSAhPSBzb3VyY2UtPmluZGV4KQogICAgICAgICAgICAgICAgIHJldHVy
bjsKIApAQCAtMjc0LDYgKzM0Miw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICBwYXR0ZXJuTWF0Y2hlZFZhbHVlcy5hZGQoYnJhbmNoKTsKICAgICAgICAg
ICAgIGV4aXRDb25kaXRpb24gPSBicmFuY2gtPmNoaWxkKDApOworICAgICAgICAgICAgcGF0dGVy
bk1hdGNoZWRWYWx1ZXMuYWRkKGV4aXRDb25kaXRpb24pOwogCiAgICAgICAgICAgICBjb25kaXRp
b25JbnZlcnRlZCA9IGxvb3BQb3N0Zm9vdGVyICE9IGxvb3BGb290LT5zdWNjZXNzb3IoMCkuYmxv
Y2soKTsKICAgICAgICAgICAgIGNoZWNrQmVmb3JlV3JpdGUgPSBtX3Byb2MuZG9taW5hdG9ycygp
LnN0cmljdGx5RG9taW5hdGVzKGxvb3BGb290LCBtX2Jsb2NrKTsKQEAgLTI4Nyw4ICszNTYsMTUg
QEAgcHVibGljOgogICAgICAgICB7CiAgICAgICAgICAgICBhdXRvIGV4dHJhY3RMb29wQm91bmQg
PSBbJl0gKFZhbHVlKiBpbmRleCwgVmFsdWUqIGJvdW5kKSAtPiBWYWx1ZSogewogICAgICAgICAg
ICAgICAgIC8vIE1hdGNoIGkrMSB3aGVuIHdlIGRvIGEgd3JpdGUgZmlyc3QgZm9sbG93ZWQgYnkg
dGhlIGNoZWNrIGZvciB0aGUgbmV4dCBpdGVyYXRpb24KLSAgICAgICAgICAgICAgICBpZiAoIWNo
ZWNrQmVmb3JlV3JpdGUgJiYgaW5kZXgtPm9wY29kZSgpID09IEFkZCAmJiBpbmRleC0+Y2hpbGQo
MCkgPT0gc291cmNlLT5pbmRleCAmJiBpbmRleC0+Y2hpbGQoMSktPmlzSW50KDEpKQorICAgICAg
ICAgICAgICAgIGlmICghY2hlY2tCZWZvcmVXcml0ZSAmJiBpbmRleC0+b3Bjb2RlKCkgPT0gQWRk
ICYmIGluZGV4LT5jaGlsZCgwKSA9PSBzb3VyY2UtPmluZGV4ICYmIGluZGV4LT5jaGlsZCgxKS0+
aXNJbnQoMSkpIHsKKyAgICAgICAgICAgICAgICAgICAgcGF0dGVybk1hdGNoZWRWYWx1ZXMuYWRk
KGluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgcGF0dGVybk1hdGNoZWRWYWx1ZXMuYWRkKGJv
dW5kKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJvdW5kOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBpZiAoY2hlY2tCZWZvcmVXcml0ZSAmJiBpbmRleCA9PSBzb3Vy
Y2UtPmluZGV4KSB7CisgICAgICAgICAgICAgICAgICAgIHBhdHRlcm5NYXRjaGVkVmFsdWVzLmFk
ZChib3VuZCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBib3VuZDsKKyAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICB9Owog
CkBAIC0yOTgsNiArMzc0LDExIEBAIHB1YmxpYzoKICAgICAgICAgICAgIH0gZWxzZSBpZiAoZXhp
dENvbmRpdGlvbi0+b3Bjb2RlKCkgPT0gTGVzc1RoYW4gJiYgIWNvbmRpdGlvbkludmVydGVkKSB7
CiAgICAgICAgICAgICAgICAgLy8gZW50ZXIgbG9vcCBhZ2FpbiBpZiBzaXplIDwgaQogICAgICAg
ICAgICAgICAgIGxvb3BCb3VuZCA9IGV4dHJhY3RMb29wQm91bmQoZXhpdENvbmRpdGlvbi0+Y2hp
bGQoMSksIGV4aXRDb25kaXRpb24tPmNoaWxkKDApKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAo
ZXhpdENvbmRpdGlvbi0+b3Bjb2RlKCkgPT0gRXF1YWwgJiYgIWNvbmRpdGlvbkludmVydGVkKSB7
CisgICAgICAgICAgICAgICAgLy8gZW50ZXIgbG9vcCBhZ2FpbiBpZiBzaXplICE9IGkKKyAgICAg
ICAgICAgICAgICBsb29wQm91bmQgPSBleHRyYWN0TG9vcEJvdW5kKGV4aXRDb25kaXRpb24tPmNo
aWxkKDEpLCBleGl0Q29uZGl0aW9uLT5jaGlsZCgwKSk7CisgICAgICAgICAgICAgICAgaWYgKCFs
b29wQm91bmQpCisgICAgICAgICAgICAgICAgICAgIGxvb3BCb3VuZCA9IGV4dHJhY3RMb29wQm91
bmQoZXhpdENvbmRpdGlvbi0+Y2hpbGQoMCksIGV4aXRDb25kaXRpb24tPmNoaWxkKDEpKTsKICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKCFsb29wQm91bmQpIHsKQEAgLTMxMCw4MyAr
MzkxLDk5IEBAIHB1YmxpYzoKICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZXJlIGFyZSBubyBvdGhl
ciBlZmZlY3RmdWwgdGhpbmdzIGhhcHBlbmluZy4KICAgICAgICAgLy8gVGhpcyBhbHNvIGd1YXJh
bnRlZXMgdGhhdCB3ZSBmb3VuZCB0aGUgb25seSBicmFuY2ggaW4gdGhlIGxvb3AuIFRoaXMgbWVh
bnMgdGhhdCBvdXIKICAgICAgICAgLy8gbG9hZC9zdG9yZSBtdXN0IGhhcHBlbiBpZmYgb3VyIGlu
ZGV4IHVwZGF0ZSBhbmQgYnJhbmNoIGRvLgotICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2Nr
IDogbG9vcElubmVyQmxvY2tzKSB7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0g
MDsgaW5kZXggPCBibG9jay0+c2l6ZSgpOyArK2luZGV4KSB7Ci0gICAgICAgICAgICAgICAgVmFs
dWUqIHZhbHVlID0gYmxvY2stPmF0KGluZGV4KTsKLSAgICAgICAgICAgICAgICBpZiAocGF0dGVy
bk1hdGNoZWRWYWx1ZXMuY29udGFpbnModmFsdWUpIHx8IHZhbHVlLT5vcGNvZGUoKSA9PSBKdW1w
KQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgICAgIEVmZmVj
dHMgZWZmZWN0cyA9IHZhbHVlLT5lZmZlY3RzKCk7Ci0gICAgICAgICAgICAgICAgZWZmZWN0cy5y
ZWFkc0xvY2FsU3RhdGUgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBpZiAoZWZmZWN0cyAhPSBF
ZmZlY3RzOjpub25lKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCi0gICAg
ICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG4oIk5vdCBieXRlIGNvcHkgbG9vcCwgbm9kZSAi
LCAqdmFsdWUsICIgaGFzIGVmZmVjdHMiKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlm
ICghaG9pc3RWYWx1ZShsb29wUHJlaGVhZGVyLCBzb3VyY2UtPmFycmF5QmFzZSwgZmFsc2UpCi0g
ICAgICAgICAgICB8fCAhaG9pc3RWYWx1ZShsb29wUHJlaGVhZGVyLCBkZXN0aW5hdGlvbi0+YXJy
YXlCYXNlLCBmYWxzZSkKLSAgICAgICAgICAgIHx8ICFob2lzdFZhbHVlKGxvb3BQcmVoZWFkZXIs
IGxvb3BCb3VuZCwgZmFsc2UpKQorICAgICAgICBpZiAoIWhvaXN0QmxvY2tzKGxvb3BQcmVoZWFk
ZXIsIGxvb3BJbm5lckJsb2NrcywgcGF0dGVybk1hdGNoZWRWYWx1ZXMsIC8qIGNhbk11dGF0ZSA9
ICovIGZhbHNlKSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAodmVyYm9zZSkK
ICAgICAgICAgICAgIGRhdGFMb2dMbigiRm91bmQgYnl0ZSBjb3B5IGxvb3A6ICIsICpzb3VyY2Ut
PmFycmF5QmFzZSwgIlsiLCAqc291cmNlLT5pbmRleCwgIl0gPSAiLCAqZGVzdGluYXRpb24tPmFy
cmF5QmFzZSwgIlsiLCAqZGVzdGluYXRpb24tPmluZGV4LCAiXSBmcm9tIGluZGV4ICIsICpzdGFy
dGluZ0luZGV4LCAiIHRvIG1heCBpbmRleCAiLCAqbG9vcEJvdW5kLCAiIHN0cmlkZTogIiwgZWxl
bVNpemUpOwogCi0gICAgICAgIGJvb2wgaG9pc3RSZXN1bHQgPSBob2lzdFZhbHVlKGxvb3BQcmVo
ZWFkZXIsIHNvdXJjZS0+YXJyYXlCYXNlKTsKLSAgICAgICAgaG9pc3RSZXN1bHQgJj0gaG9pc3RW
YWx1ZShsb29wUHJlaGVhZGVyLCBkZXN0aW5hdGlvbi0+YXJyYXlCYXNlKTsKLSAgICAgICAgaG9p
c3RSZXN1bHQgJj0gaG9pc3RWYWx1ZShsb29wUHJlaGVhZGVyLCBsb29wQm91bmQpOworICAgICAg
ICBib29sIGhvaXN0UmVzdWx0ID0gaG9pc3RCbG9ja3MobG9vcFByZWhlYWRlciwgbG9vcElubmVy
QmxvY2tzLCBwYXR0ZXJuTWF0Y2hlZFZhbHVlcywgLyogY2FuTXV0YXRlID0gKi8gdHJ1ZSk7CiAg
ICAgICAgIEFTU0VSVF9VTlVTRUQoaG9pc3RSZXN1bHQsIGhvaXN0UmVzdWx0KTsKKyAgICAgICAg
YXV0byBvcmlnaW4gPSBzb3VyY2UtPmFycmF5QmFzZS0+b3JpZ2luKCk7CiAKLSAgICAgICAgYXV0
byBvcmlnaW4gPSBsb29wUG9zdGZvb3Rlci0+YXQoMCktPm9yaWdpbigpOwotCi0gICAgICAgIEJh
c2ljQmxvY2sqIG1lbWNweSA9IG1fYmxvY2tJbnNlcnRpb25TZXQuaW5zZXJ0QmVmb3JlKGxvb3BQ
b3N0Zm9vdGVyLCBsb29wUG9zdGZvb3Rlci0+ZnJlcXVlbmN5KCkpOwotICAgICAgICBtZW1jcHkt
PnNldFN1Y2Nlc3NvcnMoRnJlcXVlbnRlZEJsb2NrKGxvb3BQb3N0Zm9vdGVyKSk7Ci0gICAgICAg
IG1lbWNweS0+YWRkUHJlZGVjZXNzb3IobG9vcFByZWhlYWRlcik7CisgICAgICAgIEJhc2ljQmxv
Y2sqIGRvQ29weUJvZHkgPSBtX2Jsb2NrSW5zZXJ0aW9uU2V0Lmluc2VydEJlZm9yZShsb29wUG9z
dGZvb3RlciwgbG9vcFBvc3Rmb290ZXItPmZyZXF1ZW5jeSgpKTsKKyAgICAgICAgZG9Db3B5Qm9k
eS0+c2V0U3VjY2Vzc29ycyhGcmVxdWVudGVkQmxvY2sobG9vcFBvc3Rmb290ZXIpKTsKKyAgICAg
ICAgZG9Db3B5Qm9keS0+YWRkUHJlZGVjZXNzb3IobG9vcFByZWhlYWRlcik7CiAgICAgICAgIHdo
aWxlIChsb29wUG9zdGZvb3Rlci0+cHJlZGVjZXNzb3JzKCkuc2l6ZSgpKSAKICAgICAgICAgICAg
IGxvb3BQb3N0Zm9vdGVyLT5yZW1vdmVQcmVkZWNlc3Nvcihsb29wUG9zdGZvb3Rlci0+cHJlZGVj
ZXNzb3JzKClbMF0pOwotICAgICAgICBsb29wUG9zdGZvb3Rlci0+YWRkUHJlZGVjZXNzb3IobWVt
Y3B5KTsKLSAgICAgICAgbG9vcFByZWhlYWRlci0+c2V0U3VjY2Vzc29ycyhtZW1jcHkpOworICAg
ICAgICBsb29wUG9zdGZvb3Rlci0+YWRkUHJlZGVjZXNzb3IoZG9Db3B5Qm9keSk7CisgICAgICAg
IGxvb3BQcmVoZWFkZXItPnNldFN1Y2Nlc3NvcnMoZG9Db3B5Qm9keSk7CisKKyAgICAgICAgYXV0
byBsb29wQm91bmRCeXRlcyA9IGRvQ29weUJvZHktPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBT
aGwsIG9yaWdpbiwKKyAgICAgICAgICAgIGxvb3BCb3VuZCwKKyAgICAgICAgICAgIGRvQ29weUJv
ZHktPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KG1fcHJvYywgb3JpZ2luLCBXVEY6OmZhc3RMb2cy
KGVsZW1TaXplKSkpOwogCiAgICAgICAgIEVmZmVjdHMgZWZmZWN0cyA9IEVmZmVjdHM6OmZvckNh
bGwoKTsKLSAgICAgICAgbWVtY3B5LT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4obV9wcm9jLCBCMzo6
Vm9pZCwgb3JpZ2luLCBlZmZlY3RzLAotICAgICAgICAgICAgbWVtY3B5LT5hcHBlbmROZXc8Q29u
c3RQdHJWYWx1ZT4obV9wcm9jLCBvcmlnaW4sIHRhZ0NGdW5jdGlvbjxPcGVyYXRpb25QdHJUYWc+
KG9wZXJhdGlvbkZhc3RGb3J3YXJkQ29weTMyKSksCi0gICAgICAgICAgICBkZXN0aW5hdGlvbi0+
YXBwZW5kQWRkcihtX3Byb2MsIG1lbWNweSwgZGVzdGluYXRpb24tPmFycmF5QmFzZSksCi0gICAg
ICAgICAgICBzb3VyY2UtPmFwcGVuZEFkZHIobV9wcm9jLCBtZW1jcHksIHNvdXJjZS0+YXJyYXlC
YXNlKSwKLSAgICAgICAgICAgIGxvb3BCb3VuZCk7CisgICAgICAgIGRvQ29weUJvZHktPmFwcGVu
ZE5ldzxDQ2FsbFZhbHVlPihtX3Byb2MsIEIzOjpWb2lkLCBvcmlnaW4sIGVmZmVjdHMsCisgICAg
ICAgICAgICBvcGVyYXRpb25Gb3JFbGVtU2l6ZShkb0NvcHlCb2R5KSwKKyAgICAgICAgICAgIG1h
a2VXYXNtQWRkcmVzcyhkb0NvcHlCb2R5LCBkZXN0aW5hdGlvbi0+YXBwZW5kQWRkcihtX3Byb2Ms
IGRvQ29weUJvZHksIGRlc3RpbmF0aW9uLT5hcnJheUJhc2UpLCBkZXN0aW5hdGlvbi0+d2FzbUJh
c2VHUFIpLAorICAgICAgICAgICAgbWFrZVdhc21BZGRyZXNzKGRvQ29weUJvZHksIHNvdXJjZS0+
YXBwZW5kQWRkcihtX3Byb2MsIGRvQ29weUJvZHksIHNvdXJjZS0+YXJyYXlCYXNlKSwgc291cmNl
LT53YXNtQmFzZUdQUiksCisgICAgICAgICAgICBsb29wQm91bmRCeXRlcyk7CiAKLSAgICAgICAg
bWVtY3B5LT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgSnVtcCwgb3JpZ2luKTsKKyAgICAgICAg
ZG9Db3B5Qm9keS0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKG1fcHJvYywgSnVtcCwgb3JpZ2luLCBG
cmVxdWVudGVkQmxvY2sobG9vcFBvc3Rmb290ZXIpKTsKICAgICB9CiAKLSAgICBib29sIGhvaXN0
VmFsdWUoQmFzaWNCbG9jayogaW50bywgVmFsdWUqIHZhbHVlLCBib29sIGNhbk11dGF0ZSA9IHRy
dWUpCisgICAgYm9vbCBjYW5Ib2lzdFZhbHVlKEJhc2ljQmxvY2sqIGludG8sIFZhbHVlKiB2YWx1
ZSwgSGFzaFNldDxWYWx1ZSo+IG9ic29sZXRlVmFsdWVzKQogICAgIHsKICAgICAgICAgaWYgKG1f
cHJvYy5kb21pbmF0b3JzKCkuZG9taW5hdGVzKHZhbHVlLT5vd25lciwgaW50bykpCiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKIAorICAgICAgICBhdXRvIG5vT2Jzb2xldGVWYWx1ZXMgPSBIYXNo
U2V0PFZhbHVlKj4geyB9OworICAgICAgICBhdXRvJiBhbGxvd2VkQ2hpbGRyZW4gPSBvYnNvbGV0
ZVZhbHVlcy5jb250YWlucyh2YWx1ZSkgPyBvYnNvbGV0ZVZhbHVlcyA6IG5vT2Jzb2xldGVWYWx1
ZXM7CisKICAgICAgICAgRWZmZWN0cyBlZmZlY3RzID0gdmFsdWUtPmVmZmVjdHMoKTsKLSAgICAg
ICAgaWYgKGVmZmVjdHMgIT0gRWZmZWN0czo6bm9uZSgpKSB7CisgICAgICAgIGlmIChlZmZlY3Rz
ICE9IEVmZmVjdHM6Om5vbmUoKSAmJiAhb2Jzb2xldGVWYWx1ZXMuY29udGFpbnModmFsdWUpKSB7
CiAgICAgICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nTG4oIkNh
bm5vdCBob2lzdCAiLCAqdmFsdWUsICIgaW50byAiLCAqaW50bywgIiBzaW5jZSBpdCBoYXMgZWZm
ZWN0cyIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKICAgICAgICAg
Zm9yIChWYWx1ZSogY2hpbGQgOiB2YWx1ZS0+Y2hpbGRyZW4oKSkgewotICAgICAgICAgICAgaWYg
KCFob2lzdFZhbHVlKGludG8sIGNoaWxkLCBmYWxzZSkpCisgICAgICAgICAgICBpZiAoIWNhbkhv
aXN0VmFsdWUoaW50bywgY2hpbGQsIGFsbG93ZWRDaGlsZHJlbikpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGNhbk11dGF0ZSkgewotICAg
ICAgICAgICAgZm9yIChWYWx1ZSogY2hpbGQgOiB2YWx1ZS0+Y2hpbGRyZW4oKSkKLSAgICAgICAg
ICAgICAgICBob2lzdFZhbHVlKGludG8sIGNoaWxkKTsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorCisgICAgYm9vbCBob2lzdEJsb2NrcyhCYXNpY0Jsb2NrKiBpbnRvLCBTbWFsbFNldDxC
YXNpY0Jsb2NrKj4mIGJsb2NrcywgSGFzaFNldDxWYWx1ZSo+IG9ic29sZXRlVmFsdWVzLCBib29s
IGNhbk11dGF0ZSA9IGZhbHNlKQorICAgIHsKKyAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9j
ayA6IG1fcHJvYy5ibG9ja3NJblByZU9yZGVyKCkpIHsKKyAgICAgICAgICAgIGlmIChpbnRvID09
IGJsb2NrIHx8ICFibG9ja3MuY29udGFpbnMoYmxvY2spKQorICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBibG9j
ay0+c2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgICAgICAgICAgVmFsdWUqJiB2YWx1ZSA9IGJs
b2NrLT5hdChpbmRleCk7CisgICAgICAgICAgICAgICAgaWYgKHZhbHVlLT5vcGNvZGUoKSA9PSBK
dW1wKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgIGlm
ICghY2FuSG9pc3RWYWx1ZShpbnRvLCB2YWx1ZSwgb2Jzb2xldGVWYWx1ZXMpKSB7CisgICAgICAg
ICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxv
Z0xuKCJOb3QgYnl0ZSBjb3B5IGxvb3AsIG5vZGUgIiwgKnZhbHVlLCAiIGNhbm5vdCBiZSBob2lz
dGVkIik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAg
ICB9CiAKLSAgICAgICAgICAgIHZhbHVlLT5vd25lci0+YXQodmFsdWUtPmluZGV4KCkpID0gbV9w
cm9jLmFkZDxWYWx1ZT4oTm9wLCBWb2lkLCB2YWx1ZS0+b3JpZ2luKCkpOwotICAgICAgICAgICAg
aW50by0+YXBwZW5kTm9uVGVybWluYWwodmFsdWUpOworICAgICAgICAgICAgICAgIGlmIChvYnNv
bGV0ZVZhbHVlcy5jb250YWlucyh2YWx1ZSkgJiYgY2FuTXV0YXRlKSB7CisgICAgICAgICAgICAg
ICAgICAgIHZhbHVlLT5yZXBsYWNlV2l0aE5vcElnbm9yaW5nVHlwZSgpOworICAgICAgICAgICAg
ICAgIH0gZWxzZSBpZiAoIW9ic29sZXRlVmFsdWVzLmNvbnRhaW5zKHZhbHVlKSAmJiBjYW5NdXRh
dGUpIHsKKyAgICAgICAgICAgICAgICAgICAgaW50by0+YXBwZW5kTm9uVGVybWluYWwodmFsdWUp
OworICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IG1fcHJvYy5hZGQ8VmFsdWU+KE5vcCwgVm9p
ZCwgdmFsdWUtPm9yaWdpbigpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAg
ICAgICAgIH0KIAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKKyAgICBWYWx1ZSogbWFr
ZVdhc21BZGRyZXNzKEJhc2ljQmxvY2sqIGludG8sIFZhbHVlKiBwb2ludGVyLCBzdGQ6Om9wdGlv
bmFsPEdQUlJlZz4gYmFzZUdQUikKKyAgICB7CisgICAgICAgIGlmIChiYXNlR1BSKSB7CisgICAg
ICAgICAgICByZXR1cm4gaW50by0+YXBwZW5kTmV3PFdhc21BZGRyZXNzVmFsdWU+KG1fcHJvYywg
cG9pbnRlci0+b3JpZ2luKCksCisgICAgICAgICAgICAgICAgaW50by0+YXBwZW5kTmV3PFZhbHVl
PihtX3Byb2MsIFpFeHQzMiwgcG9pbnRlci0+b3JpZ2luKCksIHBvaW50ZXIpLCAqYmFzZUdQUik7
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHBvaW50ZXI7CisgICAgfQorCiAgICAgYm9vbCBy
dW4oKQogICAgIHsKICAgICAgICAgaWYgKHZlcmJvc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VMb29wU3RyZW5ndGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1JlZHVjZUxvb3BTdHJlbmd0aC5oCmluZGV4IDUzNWU1NjU5OTdlMTRiY2M0NTM3
NjM4NTBmZDMxYjRlMTM5ZjgwY2EuLmMxZTBhMGJjYWI1YWUzOTMyMjM5MDhmMzE3YWJkNjllMjEz
NzhmMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZUxvb3BT
dHJlbmd0aC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZUxvb3BTdHJl
bmd0aC5oCkBAIC0zNywxMDYgKzM3LDkgQEAgY2xhc3MgUHJvY2VkdXJlOwogCiBib29sIHJlZHVj
ZUxvb3BTdHJlbmd0aChQcm9jZWR1cmUmKTsKIAotCi0KLSNpZiBDUFUoWDg2XzY0KQotLyoKLSAq
IFRoZSBzZW1hbnRpY3Mgb2YgQjMgcmVxdWlyZSB0aGF0IGxvYWRzIGFuZCBzdG9yZXMgYXJlIG5v
dCByZWR1Y2VkIGluIGdyYW51bGFyaXR5LgotICogSWYgd2Ugd291bGQgdXNlIHN5c3RlbSBtZW1j
cHksIHRoZW4gaXQgaXMgcG9zc2libGUgdGhhdCB3ZSB3b3VsZCBnZXQgYSBieXRlIGNvcHkgbG9v
cCwKLSAqIGFuZCB0aGlzIGNvdWxkIGNhdXNlIEdDIHRlYXJpbmcuCi0gKi8KLUFMV0FZU19JTkxJ
TkUgdm9pZCBmYXN0Rm9yd2FyZENvcHkzMih1aW50MzJfdCogZHN0LCBjb25zdCB1aW50MzJfdCog
c3JjLCBzaXplX3Qgc2l6ZSkKLXsKLSAgICB1aW50NjRfdCBpOwotICAgIGludDY0X3QgY291bnRl
cjsKLSAgICB1aW50NjRfdCB0bXAsIHRtcDI7Ci0KLSAgICBhc20gdm9sYXRpbGUoCi0gICAgICAg
ICJ0ZXN0ICVxW3NpemVdLCAlcVtzaXplXVx0XG4iCi0gICAgICAgICJqeiA5MDBmXHRcbiIgLy8g
ZXhpdAotICAgICAgICAieG9ycSAlcVtpXSwgJXFbaV1cdFxuIgotICAgICAgICAvLyBpZiBzaXpl
IDwgOAotICAgICAgICAiY21wICQ4LCAlcVtzaXplXVx0XG4iCi0gICAgICAgICJqbCAxMDBmXHRc
biIgLy8gYmFja3BvcmNoCi0gICAgICAgIC8vIGlmIChkc3QgKyBzaXplKjQgPD0gc3JjIHx8IHNy
YyArIHNpemUqNCA8PSBkc3QpCi0gICAgICAgICJsZWFxICglcVtzcmNdLCAlcVtzaXplXSwgNCks
ICVxW3RtcF1cdFxuIgotICAgICAgICAiY21wICVxW3RtcF0sICVxW2RzdF1cdFxuIgotICAgICAg
ICAiamFlIDUwMGZcdFxuIiAvLyBzaW1kIG5vIG92ZXJsYXAKLSAgICAgICAgImxlYXEgKCVxW2Rz
dF0sICVxW3NpemVdLCA0KSwgJXFbdG1wXVx0XG4iCi0gICAgICAgICJjbXAgJXFbdG1wXSwgJXFb
c3JjXVx0XG4iCi0gICAgICAgICJqYWUgNTAwZlx0XG4iIC8vIHNpbWQgbm8gb3ZlcmxhcAotICAg
ICAgICAiam1wIDEwMGZcdFxuIiAvLyBCYWNrcG9yY2gKLQotICAgICAgICAvLyBCYWNrcG9yY2gg
KGFzc3VtZXMgd2UgY2FuIHdyaXRlIGF0IGxlYXN0IG9uZSBpbnQpCi0gICAgICAgICIxMDA6XHRc
biIKLSAgICAgICAgLy8gY291bnRlciA9IChzaXplIC0gaSklNAotICAgICAgICAibW92ICVxW3Np
emVdLCAlcVtjb3VudGVyXVx0XG4iCi0gICAgICAgICJzdWJxICVxW2ldLCAlcVtjb3VudGVyXVx0
XG4iCi0KLSAgICAgICAgLy8gSWYgd2UgYXJlIGEgbXVsdGlwbGUgb2YgNCwgdW5yb2xsIHRoZSBs
b29wCi0gICAgICAgIC8vIFdlIGFscmVhZHkga25vdyB3ZSBhcmUgbm9uemVybwotICAgICAgICAi
YW5kICQzLCAlcVtjb3VudGVyXVx0XG4iCi0gICAgICAgICJqeiAyMDBmXHRcbiIgLy8gdW5yb2xs
ZWQgbG9vcAotCi0gICAgICAgICJuZWdxICVxW2NvdW50ZXJdXHRcbiIKLSAgICAgICAgIi5iYWxp
Z24gMzJcdFxuIgotICAgICAgICAiMTAxOlx0XG4iCi0gICAgICAgICJtb3YgKCVxW3NyY10sICVx
W2ldLCA0KSwgJWtbdG1wXVx0XG4iCi0gICAgICAgICJtb3YgJWtbdG1wXSwgKCVxW2RzdF0sICVx
W2ldLCA0KVx0XG4iCi0gICAgICAgICJpbmNxICVxW2ldXHRcbiIKLSAgICAgICAgImluY3EgJXFb
Y291bnRlcl1cdFxuIgotICAgICAgICAiam56IDEwMWJcdFxuIgotICAgICAgICAvLyBEbyB3ZSBz
dGlsbCBoYXZlIGFueXRoaW5nIGxlZnQ/Ci0gICAgICAgICJjbXBxICVxW3NpemVdLCAlcVtpXVx0
XG4iCi0gICAgICAgICJqZSA5MDBmXHRcbiIgLy8gZXhpdAotICAgICAgICAvLyBUaGVuIGdvIHRv
IHRoZSB1bnJvbGxlZCBsb29wCi0gICAgICAgICJqbXAgMjAwZlx0XG4iCi0KLSAgICAgICAgLy8g
VW5yb2xsZWQgbG9vcCAoYXNzdW1lcyBtdWx0aXBsZSBvZiA0LCBjYW4gZG8gb25lIGl0ZXJhdGlv
bikKLSAgICAgICAgIjIwMDpcdFxuIgotICAgICAgICAic2hyICQyLCAlcVtjb3VudGVyXVx0XG4i
Ci0gICAgICAgICJuZWdxICVxW2NvdW50ZXJdXHRcbiIKLSAgICAgICAgIi5iYWxpZ24gMzJcdFxu
IgotICAgICAgICAiMjAxOlx0XG4iCi0gICAgICAgICJtb3YgKCVxW3NyY10sICVxW2ldLCA0KSwg
JWtbdG1wXVx0XG4iCi0gICAgICAgICJtb3YgJWtbdG1wXSwgKCVxW2RzdF0sICVxW2ldLCA0KVx0
XG4iCi0gICAgICAgICJtb3YgNCglcVtzcmNdLCAlcVtpXSwgNCksICVrW3RtcDJdXHRcbiIKLSAg
ICAgICAgIm1vdiAla1t0bXAyXSwgNCglcVtkc3RdLCAlcVtpXSwgNClcdFxuIgotICAgICAgICAi
bW92IDgoJXFbc3JjXSwgJXFbaV0sIDQpLCAla1t0bXAyXVx0XG4iCi0gICAgICAgICJtb3YgJWtb
dG1wMl0sIDgoJXFbZHN0XSwgJXFbaV0sIDQpXHRcbiIKLSAgICAgICAgIm1vdiAxMiglcVtzcmNd
LCAlcVtpXSwgNCksICVrW3RtcF1cdFxuIgotICAgICAgICAibW92ICVrW3RtcF0sIDEyKCVxW2Rz
dF0sICVxW2ldLCA0KVx0XG4iCi0gICAgICAgICJhZGRxICQ0LCAlcVtpXVx0XG4iCi0gICAgICAg
ICJjbXBxICVxW3NpemVdLCAlcVtpXVx0XG4iCi0gICAgICAgICJqYiAyMDFiXHRcbiIKLSAgICAg
ICAgImptcCA5MDBmXHRcbiIgLy8gZXhpdAotCi0gICAgICAgIC8vIHNpbWQgbm8gb3ZlcmxhcAot
ICAgICAgICAvLyBjb3VudGVyID0gLShzaXplLzgpOwotICAgICAgICAiNTAwOlx0XG4iCi0gICAg
ICAgICJtb3YgJXFbc2l6ZV0sICVxW2NvdW50ZXJdXHRcbiIKLSAgICAgICAgInNocnEgJDMsICVx
W2NvdW50ZXJdXHRcbiIKLSAgICAgICAgIm5lZ3EgJXFbY291bnRlcl1cdFxuIgotICAgICAgICAi
LmJhbGlnbiAzMlx0XG4iCi0gICAgICAgICI1MDE6XHRcbiIKLSAgICAgICAgIm1vdnVwcyAoJXFb
c3JjXSwgJXFbaV0sIDQpLCAlJXhtbTBcdFxuIgotICAgICAgICAibW92dXBzIDE2KCVxW3NyY10s
ICVxW2ldLCA0KSwgJSV4bW0xXHRcbiIKLSAgICAgICAgIm1vdnVwcyAlJXhtbTAsICglcVtkc3Rd
LCAlcVtpXSwgNClcdFxuIgotICAgICAgICAibW92dXBzICUleG1tMSwgMTYoJXFbZHN0XSwgJXFb
aV0sIDQpXHRcbiIKLSAgICAgICAgImFkZHEgJDgsICVxW2ldXHRcbiIKLSAgICAgICAgImluY3Eg
JXFbY291bnRlcl1cdFxuIgotICAgICAgICAiam56IDUwMWJcdFxuIgotICAgICAgICAvLyBpZiAo
aSA9PSBzaXplKQotICAgICAgICAiY21wcSAlcVtzaXplXSwgJXFbaV1cdFxuIgotICAgICAgICAi
amUgOTAwZlx0XG4iIC8vIGVuZAotICAgICAgICAiam1wIDEwMGJcdFxuIiAvLyBiYWNrcG9yY2gK
LSAgICAgICAgIjkwMDpcdFxuIgotICAgIDogW2ldICI9JmMiIChpKSwgW2NvdW50ZXJdICI9JnIi
IChjb3VudGVyKSwgW3RtcF0gIj0mYSIgKHRtcCksICBbdG1wMl0gIj0mciIgKHRtcDIpCi0gICAg
OiBbZHN0XSAiRCIgKGRzdCksIFtzcmNdICJTIiAoc3JjKSwgW3NpemVdICJyIiAoc2l6ZSkKLSAg
ICA6ICJ4bW0wIiwgInhtbTEiKTsKLX0KLQotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25GYXN0Rm9yd2FyZENvcHkzMiwgdm9pZCwgKHVpbnQzMl90KiwgY29uc3QgdWludDMyX3Qq
LCBzaXplX3QpKTsKKyNpZiBDT01QSUxFUihHQ0NfQ09NUEFUSUJMRSkgJiYgKENQVShYODZfNjQp
IHx8IENQVShBUk02NCkpCitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdDU2Fm
ZU1lbW1vdmU0LCB2b2lkLCAodWludDMyX3QqLCBjb25zdCB1aW50MzJfdCosIHNpemVfdCkpOwor
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25HQ1NhZmVNZW1tb3ZlOCwgdm9pZCwg
KEpTVmFsdWUqLCBjb25zdCBKU1ZhbHVlKiwgc2l6ZV90KSk7CiAjZW5kaWYKIAogfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVz
dGIzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmgKaW5kZXggOWRhODFlYzM1
MDU5ODc3OGUwNjc5ZjBjNDU4YTIxM2I3YjE1ZTkwMC4uOTFiOWFmMTQzNzM4ZjNkM2JlYzZlMTRj
NGE0M2ZmMTQzMTliZTVmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rl
c3RiMy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaApAQCAtMTE1NCw3
ICsxMTU0LDYgQEAgdm9pZCBhZGRBdG9taWNUZXN0cyhjb25zdCBjaGFyKiBmaWx0ZXIsIERlcXVl
PFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQoKT4+PiYpOwogdm9pZCBhZGRMb2FkVGVzdHMoY29uc3Qg
Y2hhciogZmlsdGVyLCBEZXF1ZTxSZWZQdHI8U2hhcmVkVGFzazx2b2lkKCk+Pj4mKTsKIHZvaWQg
YWRkVHVwbGVUZXN0cyhjb25zdCBjaGFyKiBmaWx0ZXIsIERlcXVlPFJlZlB0cjxTaGFyZWRUYXNr
PHZvaWQoKT4+PiYpOwogCi12b2lkIHRlc3RGYXN0Rm9yd2FyZENvcHkzMigpOwogdm9pZCB0ZXN0
Qnl0ZUNvcHlMb29wKCk7CiB2b2lkIHRlc3RCeXRlQ29weUxvb3BTdGFydElzTG9vcERlcGVuZGVu
dCgpOwogdm9pZCB0ZXN0Qnl0ZUNvcHlMb29wQm91bmRJc0xvb3BEZXBlbmRlbnQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfOC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvdGVzdGIzXzguY3BwCmluZGV4IDVhZTM1MWM1NzY5MTlkZjU0YjI3ZTQ2
M2YwNjEzYTI1ZWE5Njg0MTAuLjdhYzFlOWYxNTRiY2VlYTI3YjVkMWYzNjk2NWQ4YzA0MDJiOTRk
OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfOC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM184LmNwcApAQCAtOTM2LDY1ICs5MzYs
NiBAQCB2b2lkIGFkZExvYWRUZXN0cyhjb25zdCBjaGFyKiBmaWx0ZXIsIERlcXVlPFJlZlB0cjxT
aGFyZWRUYXNrPHZvaWQoKT4+PiYgdGFza3MpCiAgICAgUlVOKHRlc3RMb2FkPHVpbnQxNl90PihM
b2FkMTZaLCAtMTAwMDAwMDAwMCkpOwogfQogCi12b2lkIHRlc3RGYXN0Rm9yd2FyZENvcHkzMigp
Ci17Ci0jaWYgQ1BVKFg4Nl82NCkKLSAgICBmb3IgKGNvbnN0IGJvb2wgYWxpZ25lZCA6IHsgdHJ1
ZSwgZmFsc2UgfSkgewotICAgICAgICBmb3IgKGNvbnN0IGJvb2wgb3ZlcmxhcCA6IHsgZmFsc2Us
IHRydWUgfSkgewotICAgICAgICAgICAgZm9yIChzaXplX3QgYXJyc2l6ZSA6IHsgMSwgNCwgNSwg
NiwgOCwgMTAsIDEyLCAxNiwgMjAsIDQwLCAxMDAsIDEwMDB9KSB7Ci0gICAgICAgICAgICAgICAg
c2l6ZV90IG92ZXJsYXBBbW91bnQgPSA1OwotCi0gICAgICAgICAgICAgICAgVW5pcXVlQXJyYXk8
dWludDMyX3Q+IGFycmF5MSwgYXJyYXkyOwotICAgICAgICAgICAgICAgIHVpbnQzMl90KiBhcnIx
LCAqYXJyMjsKLQotICAgICAgICAgICAgICAgIGlmIChvdmVybGFwKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGFycmF5MSA9IG1ha2VVbmlxdWVBcnJheTx1aW50MzJfdD4oYXJyc2l6ZSAqIDIpOwot
ICAgICAgICAgICAgICAgICAgICBhcnIxID0gJmFycmF5MVswXTsKLSAgICAgICAgICAgICAgICAg
ICAgYXJyMiA9IGFycjEgKyAoYXJyc2l6ZSAtIG92ZXJsYXBBbW91bnQpOwotICAgICAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGFycmF5MSA9IG1ha2VVbmlxdWVBcnJh
eTx1aW50MzJfdD4oYXJyc2l6ZSk7Ci0gICAgICAgICAgICAgICAgICAgIGFycmF5MiA9IG1ha2VV
bmlxdWVBcnJheTx1aW50MzJfdD4oYXJyc2l6ZSk7Ci0gICAgICAgICAgICAgICAgICAgIGFycjEg
PSAmYXJyYXkxWzBdOwotICAgICAgICAgICAgICAgICAgICBhcnIyID0gJmFycmF5MlswXTsKLSAg
ICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAoIWFsaWduZWQgJiYgYXJyc2l6
ZSA8IDMpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGlm
IChvdmVybGFwICYmIGFycnNpemUgPD0gb3ZlcmxhcEFtb3VudCArIDMpCi0gICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICAgICAgaWYgKCFhbGlnbmVkKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICsrYXJyMTsKLSAgICAgICAgICAgICAgICAgICAgKythcnIyOwotICAg
ICAgICAgICAgICAgICAgICBhcnJzaXplIC09IDE7Ci0gICAgICAgICAgICAgICAgICAgIG92ZXJs
YXBBbW91bnQgLT0gMTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGFycnNpemU7ICsraSkKLSAgICAgICAgICAgICAgICAgICAgYXJy
MVtpXSA9IGk7Ci0KLSAgICAgICAgICAgICAgICBmYXN0Rm9yd2FyZENvcHkzMihhcnIyLCBhcnIx
LCBhcnJzaXplKTsKLQotICAgICAgICAgICAgICAgIGlmIChvdmVybGFwKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJyc2l6ZSAtIG92ZXJsYXBBbW91bnQ7
ICsraSkKLSAgICAgICAgICAgICAgICAgICAgICAgIENIRUNLKGFycjJbaV0gPT0gaSk7Ci0gICAg
ICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSBhcnJzaXplIC0gb3ZlcmxhcEFtb3VudDsg
aSA8IGFycnNpemU7ICsraSkKLSAgICAgICAgICAgICAgICAgICAgICAgIENIRUNLKGFycjJbaV0g
PT0gaSAtIChhcnJzaXplIC0gb3ZlcmxhcEFtb3VudCkpOwotICAgICAgICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJyc2l6ZTsg
KytpKQotICAgICAgICAgICAgICAgICAgICAgICAgQ0hFQ0soYXJyMltpXSA9PSBpKTsKLSAgICAg
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAoIWFsaWduZWQpIHsKLSAgICAgICAg
ICAgICAgICAgICAgLS1hcnIxOwotICAgICAgICAgICAgICAgICAgICAtLWFycjI7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotI2VuZGlmCi19Ci0K
IHZvaWQgdGVzdEJ5dGVDb3B5TG9vcCgpCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CkBAIC0xMTY0
LDcgKzExMDUsNiBAQCB2b2lkIHRlc3RCeXRlQ29weUxvb3BCb3VuZElzTG9vcERlcGVuZGVudCgp
CiAKIHZvaWQgYWRkQ29weVRlc3RzKGNvbnN0IGNoYXIqIGZpbHRlciwgRGVxdWU8UmVmUHRyPFNo
YXJlZFRhc2s8dm9pZCgpPj4+JiB0YXNrcykKIHsKLSAgICBSVU4odGVzdEZhc3RGb3J3YXJkQ29w
eTMyKCkpOwogICAgIFJVTih0ZXN0Qnl0ZUNvcHlMb29wKCkpOwogICAgIFJVTih0ZXN0Qnl0ZUNv
cHlMb29wU3RhcnRJc0xvb3BEZXBlbmRlbnQoKSk7CiAgICAgUlVOKHRlc3RCeXRlQ29weUxvb3BC
b3VuZElzTG9vcERlcGVuZGVudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggODgxMWI4OWYyNGE3YTMxNGUwZmE2YjE5MDFkZGQ1
MzczYzJiY2E0OC4uYWI1MmRmODViMTMyMWI5NzkzYmIzN2FkYTg1Y2I5MzFmZWM3MGM2NSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAg
LTQ2NTYsNiArNDY1NiwyMCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAog
ICAgIH0KIAogICAgIEFTU0VSVCh0eXBlID09IEFjY2Vzc1R5cGU6OkdldEJ5SWQgfHwgdHlwZSA9
PSBBY2Nlc3NUeXBlOjpHZXRCeUlkRGlyZWN0IHx8ICAhZ2V0QnlTdGF0dXMubWFrZXNDYWxscygp
KTsKKworICAgIC8vIFRoZSBsZW5ndGggcHJvcGVydHkgZm9yIHR5cGVkIGFycmF5cyBpcyBzcGVj
aWFsIGluIHRoZSBGVEwsIHNvIHdlIHNob3VsZCB0cnkgaGFyZGVyIHRvIG9wdGltaXplIGZvciBp
dC4KKyAgICBpZiAoT3B0aW9uczo6dXNlQWNjZXNzSW5saW5pbmcoKQorICAgICAgICAmJiBtX2dy
YXBoLm1fcGxhbi5pc0ZUTCgpCisgICAgICAgICYmICghZ2V0QnlTdGF0dXMuaXNTZXQoKSB8fCAh
Z2V0QnlTdGF0dXMubnVtVmFyaWFudHMoKSkKKyAgICAgICAgJiYgaWRlbnRpZmllciA9PSBtX3Zt
LT5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgKKyAgICAgICAgJiYgIW1faW5saW5lU3RhY2tUb3AtPm1f
ZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEluYWRlcXVhdGVDb3ZlcmFn
ZSkpIHsKKworICAgICAgICBhZGRUb0dyYXBoKEZvcmNlT1NSRXhpdCk7CisgICAgICAgIHNldChk
ZXN0aW5hdGlvbiwKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoZ2V0QnlJZCwgT3BJbmZvKGlkZW50
aWZpZXIpLCBPcEluZm8ocHJlZGljdGlvbiksIGJhc2UpKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKwogICAgIGlmICghZ2V0QnlTdGF0dXMuaXNTaW1wbGUoKSB8fCAhZ2V0QnlTdGF0dXMubnVt
VmFyaWFudHMoKSB8fCAhT3B0aW9uczo6dXNlQWNjZXNzSW5saW5pbmcoKSkgewogICAgICAgICBz
ZXQoZGVzdGluYXRpb24sCiAgICAgICAgICAgICBhZGRUb0dyYXBoKGdldEJ5SWQsIE9wSW5mbyhp
ZGVudGlmaWVyKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBiYXNlKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ01lbW9yeU9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0dDTWVtb3J5T3BlcmF0aW9ucy5oCmluZGV4IDVkOTI2MzJjMGJmMDRj
MjFlMjc0NjUxMDRhNTExNGFmMWU2ODhkMmIuLmU4OWIwMGFkNzUwMWMxODJkMjQ3NDdjMDEyZDE4
OTdhYzljMmNjNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDTWVt
b3J5T3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDTWVtb3J5
T3BlcmF0aW9ucy5oCkBAIC00MCw3ICs0MCw3IEBAIGNvbnN0ZXhwciBzaXplX3QgbWVkaXVtQ3V0
b2ZmID0gNCAqIDEwMjQ7CiAKIC8vIFRoaXMgaXMgYSBmb3J3YXJkcyBsb29wIHNvIGdjU2FmZU1l
bW1vdmUgY2FuIHJlbHkgb24gdGhlIGRpcmVjdGlvbi4gCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
LUFMV0FZU19JTkxJTkUgdm9pZCBnY1NhZmVNZW1jcHkoVCogZHN0LCBUKiBzcmMsIHNpemVfdCBi
eXRlcykKK0FMV0FZU19JTkxJTkUgdm9pZCBnY1NhZmVNZW1jcHkoVCogZHN0LCBjb25zdCBUKiBz
cmMsIHNpemVfdCBieXRlcykKIHsKICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihUKSA9PSBzaXpl
b2YoSlNWYWx1ZSkpOwogICAgIFJFTEVBU0VfQVNTRVJUKGJ5dGVzICUgOCA9PSAwKTsKQEAgLTE0
NCw3ICsxNDQsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgZ2NTYWZlTWVtY3B5KFQqIGRzdCwgVCog
c3JjLCBzaXplX3QgYnl0ZXMpCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotQUxXQVlTX0lO
TElORSB2b2lkIGdjU2FmZU1lbW1vdmUoVCogZHN0LCBUKiBzcmMsIHNpemVfdCBieXRlcykKK0FM
V0FZU19JTkxJTkUgdm9pZCBnY1NhZmVNZW1tb3ZlKFQqIGRzdCwgY29uc3QgVCogc3JjLCBzaXpl
X3QgYnl0ZXMpCiB7CiAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoVCkgPT0gc2l6ZW9mKEpTVmFs
dWUpKTsKICAgICBSRUxFQVNFX0FTU0VSVChieXRlcyAlIDggPT0gMCk7CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDQ3NzQzOTQ0NGVjNDgx
YjdjZGNiZDE0MjA1NDA5MTIwZTZmZTYzNGQuLmFkN2I3ZTY4OTAzMjYzMTEwMzE3M2ZkMTBlZTM4
MjE2NjkwMzNhYjggMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMDktMjggIEp1c3RpbiBNaWNoYXVkICA8
anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSBsb29wIHN0cmVuZ3Ro
IG9uIEFSTTY0IHRvbworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjMwOTA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBzdHJlc3MvdHlwZWRhcnJheS1sZW5ndGgtY2FjaGluZy5qczogQWRkZWQuCisgICAg
ICAgIChzaG91bGRCZUdldExlbmd0aCk6CisgICAgICAgIChub0lubGluZS5zaG91bGRCZUdldExl
bmd0aC5zaG91bGRCZUdldEJ5SWQpOgorICAgICAgICAoaS5zaG91bGRCZUdldExlbmd0aC50eXBl
ZEFycmF5LmxldC50cmlja3lBcnJheS5uZXcuSW50MzJBcnJheS4xMDAudHJpY2t5QXJyYXkuX19w
cm90b19fLmdldCBsZW5ndGgpOgorCiAyMDIxLTA5LTI5ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlA
YXBwbGUuY29tPgogCiAgICAgICAgIENvZGUgaW5zaWRlIHN0cmVuZ3RoIHJlZHVjdGlvbiBjYW4g
aW5jb3JyZWN0bHkgcHJvdmUgdGhhdCB3ZSBrbm93IHdoYXQgbGFzdEluZGV4IGlzCmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy90eXBlZGFycmF5LWxlbmd0aC1jYWNoaW5nLmpzIGIvSlNUZXN0
cy9zdHJlc3MvdHlwZWRhcnJheS1sZW5ndGgtY2FjaGluZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZDYwOTc1
M2RkOTE3MTMzZGRiNGUyNDdkNTA2ZDBjNWIyNWMwOTJlCi0tLSAvZGV2L251bGwKKysrIGIvSlNU
ZXN0cy9zdHJlc3MvdHlwZWRhcnJheS1sZW5ndGgtY2FjaGluZy5qcwpAQCAtMCwwICsxLDI2IEBA
CisvL0Agc2tpcCBpZiBub3QgJGppdFRlc3RzCitmdW5jdGlvbiBzaG91bGRCZUdldExlbmd0aChh
cnIxKSB7ICAgIAorICAgIGZvciAobGV0IGk9MDsgaTxhcnIxLmxlbmd0aDsgKytpKSB7CisgICAg
ICAgIGFycjFbaV0gPSAwCisgICAgfQorfQorbm9JbmxpbmUoc2hvdWxkQmVHZXRMZW5ndGgpCisK
K2Z1bmN0aW9uIHNob3VsZEJlR2V0QnlJZChhcnIxKSB7ICAgIAorICAgIGZvciAobGV0IGk9MDsg
aTxhcnIxLmxlbmd0aDsgKytpKSB7CisgICAgICAgIGFycjFbaV0gPSAwCisgICAgfQorfQorbm9J
bmxpbmUoc2hvdWxkQmVHZXRCeUlkKQorCitsZXQgdHlwZWRBcnJheSA9IG5ldyBJbnQzMkFycmF5
KDEwMCkKK2ZvciAobGV0IGk9MDsgaTwxZTc7ICsraSkgc2hvdWxkQmVHZXRMZW5ndGgodHlwZWRB
cnJheSkKKworbGV0IHRyaWNreUFycmF5ID0gbmV3IEludDMyQXJyYXkoMTAwKQordHJpY2t5QXJy
YXkuX19wcm90b19fID0geyBnZXQgbGVuZ3RoKCkgeyByZXR1cm4gMTAwMCB9IH0KKworZm9yIChs
ZXQgaT0wOyBpPDFlNjsgKytpKSBzaG91bGRCZUdldEJ5SWQodHJpY2t5QXJyYXkpCisKK3Nob3Vs
ZEJlR2V0TGVuZ3RoKHRyaWNreUFycmF5KQorCisK
</data>
<flag name="commit-queue"
          id="463413"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>